Сбои и планы по МТ7

Тема в разделе "Новости компании. Технические и финансовые вопросы", создана пользователем Мобиус Трейдер, 14 фев 2018.

  1. Alex_57

    Alex_57 Местный житель

    Да, шкала времени под графиком не соответствует барам. Видел на многих инструментах на D1, H1. Специально все инструменты и таймфреймы не проверял. Не скажу где она соответствует.
     
  2. forex_live

    forex_live Active Member

    I'm not a programmer so ask about this code:
    Я не программист, поэтому я спрашиваю об этом коде


    If is compatible / adaptable to MT7
    Если он совместим / адаптирован к MT7

    Sample Advance Take Profit Robot

    // -------------------------------------------------------------------------------------------------
    //
    // This code is a cAlgo API sample.
    //
    // This cBot is intended to be used as a sample and does not guarantee any particular outcome or
    // profit of any kind. Use it at your own risk
    //
    // -------------------------------------------------------------------------------------------------

    using System;
    using System.Linq;
    using cAlgo.API;
    using cAlgo.API.Internals;

    namespace cAlgo
    {
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class SampleAdvancedTakeProfit : Robot
    {
    private const string DefaultPositionIdParameterValue = "PID";

    [Parameter("Position Id", DefaultValue = DefaultPositionIdParameterValue)]
    public string PositionId { get; set; }

    [Parameter("Take Profit 1 Enabled", DefaultValue = false)]
    public bool TakeProfit1Enabled { get; set; }

    [Parameter("Take Profit 1 Pips", DefaultValue = 10)]
    public double TakeProfit1Pips { get; set; }

    [Parameter("Take Profit 1 Volume", DefaultValue = 1000)]
    public int TakeProfit1Volume { get; set; }

    [Parameter("Take Profit 2 Enabled", DefaultValue = false)]
    public bool TakeProfit2Enabled { get; set; }

    [Parameter("Take Profit 2 Pips", DefaultValue = 20)]
    public double TakeProfit2Pips { get; set; }

    [Parameter("Take Profit 2 Volume", DefaultValue = 2000)]
    public int TakeProfit2Volume { get; set; }

    [Parameter("Take Profit 3 Enabled", DefaultValue = false)]
    public bool TakeProfit3Enabled { get; set; }

    [Parameter("Take Profit 3 Pips", DefaultValue = 10)]
    public double TakeProfit3Pips { get; set; }

    [Parameter("Take Profit 3 Volume", DefaultValue = 3000)]
    public int TakeProfit3Volume { get; set; }

    private TakeProfitLevel[] _levels;

    private Symbol _symbol;

    protected override void OnStart()
    {
    if (PositionId == DefaultPositionIdParameterValue)
    PrintErrorAndStop("You have to specify \"Position Id\" in cBot Parameters");

    var position = FindPositionOrStop();
    _symbol = GetSymbol(position);
    _levels = GetTakeProfitLevels();

    ValidateLevels(position);
    }

    private Symbol GetSymbol(Position position)
    {
    return MarketData.GetSymbol(position.SymbolCode);
    }

    private void ValidateLevels(Position position)
    {
    MakeSureAnyLevelEnabled();
    ValidateTotalVolume(position);
    ValidateReachedLevels(position);
    ValidateVolumes();
    }

    private void ValidateVolumes()
    {
    var enabledLevels = _levels.Where(level => level.IsEnabled);
    foreach (var level in enabledLevels)
    {
    if (level.Volume < _symbol.VolumeMin)
    PrintErrorAndStop("Volume for " + _symbol.Code + " cannot be less than " + _symbol.VolumeMin);
    if (level.Volume > _symbol.VolumeMax)
    PrintErrorAndStop("Volume for " + _symbol.Code + " cannot be greater than " + _symbol.VolumeMax);
    if (level.Volume % _symbol.VolumeMin != 0)
    PrintErrorAndStop("Volume " + level.Volume + " is invalid");
    }
    }

    private void ValidateReachedLevels(Position position)
    {
    var reachedLevel = _levels.FirstOrDefault(l => l.Pips <= position.Pips);
    if (reachedLevel != null)
    PrintErrorAndStop("Level " + reachedLevel.Name + " is already reached. The amount of Pips must be more than the amount of Pips that the Position is already gaining");
    }

    private void MakeSureAnyLevelEnabled()
    {
    if (_levels.All(level => !level.IsEnabled))
    PrintErrorAndStop("You have to enable at least one \"Take Profit\" in cBot Parameters");
    }

    private void ValidateTotalVolume(Position position)
    {
    var totalVolume = _levels.Where(level => level.IsEnabled).Sum(level => level.Volume);

    if (totalVolume > position.Volume)
    PrintErrorAndStop("The sum of all Take Profit respective volumes cannot be larger than the Position's volume");
    }

    private TakeProfitLevel[] GetTakeProfitLevels()
    {
    return new[]
    {
    new TakeProfitLevel("Take Profit 1", TakeProfit1Enabled, TakeProfit1Pips, TakeProfit1Volume),
    new TakeProfitLevel("Take Profit 2", TakeProfit2Enabled, TakeProfit2Pips, TakeProfit2Volume),
    new TakeProfitLevel("Take Profit 3", TakeProfit3Enabled, TakeProfit3Pips, TakeProfit3Volume)
    };
    }

    private Position FindPositionOrStop()
    {
    var position = Positions.FirstOrDefault(p => "PID" + p.Id == PositionId || p.Id.ToString() == PositionId);
    if (position == null)
    PrintErrorAndStop("Position with Id = " + PositionId + " doesn't exist");

    return position;
    }

    private void PrintErrorAndStop(string errorMessage)
    {
    Print(errorMessage);
    Stop();

    throw new Exception(errorMessage);
    }

    protected override void OnTick()
    {
    var position = FindPositionOrStop();
    var reachedLevels = _levels.Where(level => level.IsEnabled && !level.IsTriggered && level.Pips <= position.Pips);

    foreach (var reachedLevel in reachedLevels)
    {
    reachedLevel.MarkAsTriggered();

    Print("Level \"" + reachedLevel.Name + "\" is reached. Level.Pips: " + reachedLevel.Pips + ", Position.Pips: " + position.Pips + ", Position.Id: " + position.Id);
    var volumeToClose = Math.Min(reachedLevel.Volume, position.Volume);
    ClosePosition(position, volumeToClose);

    if (!LastResult.IsSuccessful)
    Print("Cannot close position, Id: " + position.Id + ", Error: " + LastResult.Error);

    var remainingLevels = _levels.Where(level => level.IsEnabled && !level.IsTriggered);
    if (!remainingLevels.Any())
    {
    Print("All levels were reached. cBot is stopping...");
    Stop();
    return;
    }
    }
    }
    }

    internal class TakeProfitLevel
    {
    public string Name { get; private set; }

    public bool IsEnabled { get; private set; }

    public double Pips { get; private set; }

    public int Volume { get; private set; }

    public bool IsTriggered { get; private set; }

    public TakeProfitLevel(string name, bool isEnabled, double pips, int volume)
    {
    Name = name;
    IsEnabled = isEnabled;
    Pips = pips;
    Volume = volume;
    }

    public void MarkAsTriggered()
    {
    IsTriggered = true;
    }
    }
    }
     
  3. Alex_57

    Alex_57 Местный житель

    Перестали начисляться бонусы.
    MT7_03.04.2018.png
     
  4. Торговец

    Торговец Местный житель

  5. Alex_57

    Alex_57 Местный житель

    У меня тип операций был по умолчанию, как на скрине. Растянул окно ордеров, чтобы было видно что раньше начислялись.
    MT7_бонусы.png
     
  6. Alex_57

    Alex_57 Местный житель

    Чудеса!
    Только выложил скрин без бонусов, закрылся ордер и на него начислились бонусы.
    MT7_бонус2.png
     
  7. Interesting

    Interesting Я тут не случайно

    Please, publish the code of trading robots and indicators in text files or archives.
     
  8. forex_live

    forex_live Active Member

     

    Вложения:

  9. Alex_57

    Alex_57 Местный житель

    Продолжу по начислению/не начислению бонуса. Наметилась закономерность. Бонус не начисляется после ордеров с USDJPY. А после ордеров EURUSD начисляется.
    MT7_бонус3.png
     
  10. FXstart Admin

    FXstart Admin Administrator Команда форума

    Это было всегда- по 4х знаку бонусы и партнерка не начисляется если прибыль меньше 4х пипсов.
     
  11. Alex_57

    Alex_57 Местный житель

    А посмотреть скрин?
    Там USDJPYv и EURUSDv. И прибыль 20 пунктов в четвертом знаке или 200 в пятом.
     
  12. Interesting

    Interesting Я тут не случайно

    Так кто мешает отправить скрин на почту "ms" с подробной математикой и комментариями?
    Чем больше скринов - тем наглядней описание проблемы.
     
  13. Alex_57

    Alex_57 Местный житель

    После нескольких часов работы проявились два сбоя.

    Первый - перестала работать регулировка размера и расстояния между барами. На скирине видно что включено самый большой размер.
    MT7_14_04_2018_1.png

    Второй - при переходе на Н1 перестало автоматически меняться расстояние между разделителями периода. На скрине видно, что разделители периода через один час после М5 остались и на Н1 через один час.
    MT7_14_04_2018_2.png

    Перезагрузка помогает.
     
  14. МУЖИК

    МУЖИК Активный участник

    а я думал на мт7 забили все после запуска нормального мт4,а оказывается нет.....
     
  15. Interesting

    Interesting Я тут не случайно

    Я разделителями периода не пользуюсь, а вот с масштабам лажа - эт проблема реальная.
    Интересно будет потестить трейлинг ордеров, вроде он на сервере работаем.
     
  16. Alex_57

    Alex_57 Местный житель

    Выходной. Можно потестить.
    А если серьезно, после тормозов на нонфармах решил больше его не открывать. Но, попробовал биткойн в МТ4 билд 406, а там в М5 не грузит историю. Пришлось включать МТ7.
     
  17. МУЖИК

    МУЖИК Активный участник

    так в мт4 от varianse вроде биток нормально показывает....
     
  18. Alex_57

    Alex_57 Местный житель

    После того как обжегся на variance с советником и даже вручную был торговый таймаут на EURUSDv, решил туда пару месяцев не лезть. Может за это время что-то подкрутят. Торговать есть где кроме старта.
     
  19. FXstart Admin

    FXstart Admin Administrator Команда форума

    Напишите пожалуйста про сбои с советником - все должно быть идеально. Спасибо. Только сейчас заметил про сбои о которых вы написали выше - очень жаль что вы не выслали мейл. Взяли в работу. Спасибо.
     
  20. FXstart Admin

    FXstart Admin Administrator Команда форума

    Простите - вы не могли бы прислать какой-нибудь скрин для примера? Огромное спасибо.
     

Поделиться этой страницей