MetaTrader 4 Client Terminal build 610 - страница 25

 
Sura:

Тут я немного напутал с вопросом. Цена открытия 1.33615 цена стоп лоса 1.33451 из этого следует 1.33615-1.33451=164 это -1.64$ но не как -0.01 т.е. тестер стратегимй не правильно высчитывает.

Какое плечо на счете? Какая валюта депозита? Почитайте статью Азбука торговли валютами
 
Vladon:

ребята, кто замечал такой глюк, или мне показалось?

почему то иногда значения равны при выборе ордера, хотя и символ у ордера другой отличается от текущего графика.


Опять то же самое повторилось.

00:00:03 Exp - Dvigubas USDJPY,H4: modify #31475750 buy 0.02 EURAUD at 1.51031 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31500369 buy 0.01 EURNZD at 1.64780 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31503882 buy 0.01 GBPAUD at 1.85305 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31507370 buy 0.02 GBPAUD at 1.84834 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31435122 buy 0.01 GBPCAD at 1.84394 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31444670 buy 0.02 GBPCAD at 1.83994 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31451015 buy 0.03 GBPCAD at 1.83586 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31452058 buy 0.05 GBPCAD at 1.83190 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31505053 buy 0.08 GBPCAD at 1.82786 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31497384 buy 0.01 GBPNZD at 2.00914 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31422540 buy 0.01 NZDCAD at 0.91967 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31438570 buy 0.02 NZDCAD at 0.91811 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31445061 buy 0.03 NZDCAD at 0.91660 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31480131 buy 0.05 NZDCAD at 0.91508 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31497059 buy 0.08 NZDCAD at 0.91357 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31503614 buy 0.12 NZDCAD at 0.91207 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31526007 buy 0.18 NZDCAD at 0.91051 sl: 0.00000 tp: 102.90600 ok
00:00:03 Exp - Dvigubas USDJPY,H4: modify #31535539 buy 0.27 NZDCAD at 0.90898 sl: 0.00000 tp: 102.90600 ok

БИЛД 610

Советник трогает чужие ордера другой пары,

но в коде в всех функциях явно прописано:

 if(OrderSymbol() ==Symbol())
Допустим есть функция 
bool ModifyTPALL(string sy="",int op=-1,int mn=-1,double TP=0)
  {
   int i,k=OrdersTotal(),ty;
   string Autor=" Автор функции для шаблона : www.expforex.com";

   if(sy=="0") sy=Symbol();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ty=OrderType();
         if(ty<2)
           {
            if((OrderSymbol()==sy || sy=="") && (op<0 || ty==op))
              {
               if(mn<0 || OrderMagicNumber()==mn || OrderMagicNumber()==Magic)
                 {
                  ModifyOrder(-1,-1,TP);
                 }
              }
           }
        }
     }
   return(False);
  }
команда (OrderSymbol()==sy || sy=="") не выполняется и всегда равна true
 
Rosh:

Какое плечо на счете? Какая валюта депозита? Почитайте статью Азбука торговли валютами

Валюта доллар какое плечо, в тестере стратегий? ! пипс равняется 1 цент,10 пипсов =1 пункт= 10 центов.и т.д. Тут вроде простая арифметика. Мы пытаемся исправить баг вычисления прибыли или размер обеспечения лота?
 
Vladon:


Опять то же самое повторилось.

БИЛД 610

Советник трогает чужие ордера другой пары,

но в коде в всех функциях явно прописано:


Вы же сами видите код, проверьте под отладкой значения. Учтите, что сейчас используется укороченная проверка

bool ModifyTPALL(string sy="",int op=-1,int mn=-1,double TP=0)
  {
   int i,k=OrdersTotal(),ty;
   string Autor=" Автор функции для шаблона : www.expforex.com";

   if(sy=="0") sy=Symbol();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ty=OrderType();
         if(ty<2)
           {
            if((OrderSymbol()==sy || sy=="") && (op<0 || ty==op))
 
Vladon:


Опять то же самое повторилось.

БИЛД 610

Советник трогает чужие ордера другой пары,

но в коде в всех функциях явно прописано:

По-умолчанию sy="", сравниваете sy=="0", проверяете sy==""
 
Sura:

Валюта доллар какое плечо, в тестере стратегий? ! пипс равняется 1 цент,10 пипсов =1 пункт= 10 центов.и т.д. Тут вроде простая арифметика. Мы пытаемся исправить баг вычисления прибыли или размер обеспечения лота?

Добавьте в код 2 строчки и посмотрите журнал тестера

int OnInit()
  {
//---
   Print("AccountLeverage()=",AccountLeverage());
   Print("AccountCurrency()=",AccountCurrency());
//---
   return(INIT_SUCCEEDED);
  }


 
Rosh:

Вы же сами видите код, проверьте под отладкой значения. Учтите, что сейчас используется укороченная проверка


да но в функцию явно передается значение

ModifyTPALL(Symbol(),OP_BUY,Magic,AveragePrice+TakeProfitALL*Point);
 
Vladon:


да но в функцию явно передается значение

Отладка или Print(). Нет смысла заниматься теоретизированием.
 
Rosh:
Отладка или Print(). Нет смысла заниматься теоретизированием.


по принтам все вроде ок.

не пойму.

 
Vladon:


Опять то же самое повторилось.

БИЛД 610

Советник трогает чужие ордера другой пары,

но в коде в всех функциях явно прописано:

Я-бы сделал так.
bool ModifyTPALL(string sy, int op=-1,int mn=-1,double TP=0)
  {
   int i,k=OrdersTotal(),ty;
   string Autor=" Автор функции для шаблона : www.expforex.com";

   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ty=OrderType();
         if(ty<2)
           {
            if(OrderSymbol()==sy && (op<0 || ty==op))
              {
               if(mn<0 || OrderMagicNumber()==mn || OrderMagicNumber()==Magic)
                 {
                  ModifyOrder(-1,-1,TP);
                 }
              }
           }
        }
     }
   return(False);
  }
Всё-равно явно передаёшь символ.
Причина обращения: