[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 266

 
hoz:

 

 В параметре самой функции видим:

fi_Ticket = 0

 Обычно подобные функции вызываются уже после выборки ордеров, а значит тикет у них будет. Зачем тогда дефолтовое значение присваивать нулём?

 

Если вызвать функцию без этогьо параметра, то ни один if не выполнится, и функция начнет работу со строки

RefreshRates();

 Дальше идёт ещё интереснее:

if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
{
   if (fi_Ticket > 0)
   {
      bs_Symbol = OrderSymbol();
   }
   else
   {
     bs_Symbol = fs_Symbol;
                  }
                  if (bs_Symbol == Symbol())
                  {
                      bi_SymDigits = Digits;
                      bd_SymPoint = Point;
                  }

 Сразу сравнивается переменная fs_Symbol c bs_Symbol

bs_Symbol выше не была инициалзированная, там, где сама функция fGet_MarketInfo() вызывается. И вообще зачем этот bs_Symbol ?Если библиотека компилируется без ошибок,

Если библиотека компилируется без ошибок, значит переменная bs_Symbol, видимо, объявленагде-то на глобальном уровне. Там же (либо в какой-то другой функции) следует искать и ее инициализацию...

так же в условии:
if (fs_Symbol != bs_Symbol || fi_Ticket < 0)

 условие, если fi_Ticket < 0, то дальше...

if (fi_Ticket > 0)
{
   bs_Symbol = OrderSymbol();
}

 а это уже противоречит условию. В начале же чтоб отработал код нужно чтоб собладалось условие fi_Ticket < 0, а потом внутри этого условия тикет > 0. Где логика?

Внимательно: чтоб отработал код нужно чтоб собладалось условие fi_Ticket < 0 ИЛИ fs_Symbol != bs_Symbol, что означает, что если далее в конце кода имеется if (fi_Ticket > 0), то подразумевается выполнение как раз того альтернативного условия входа.
 

всем привет! можете помочь мне я тут совсем не могу разобраться)))

 
kera8383:

всем привет! можете помочь мне я тут совсем не могу разобраться)))

Начните с ЧаВо.
 
tara:

Вероятно, Вы используете непозволительно малые значения StopLoss и TakeProfit, но это - только предположение. Недостаточно информации. 


 Да нет стопы  у меня большие, ниже привожу значения.

         SL=Ask + StopLoss*Point;     // значение StopLoss = 375
         TP=Ask - TakeProfit*Point;   // значение TakeProfit = 550
 
paladin80:

Не нормализируйте стопы внутри OrderSend. Делайте это перед RefreshRates и потом подставляйте. Выводите в принт эти значения, что быть уверенным, что они правильны. Кстати, научитесь открывать позицию без стопов, т.к. есть ДЦ которые не принимают ордера со стопами. После выставления оного, модифицируйте стопы - это пройдёт.

Очень уж маленький слипадж = 2. В примере и то дают 3 и это по 4-значной котировке. Если кинете такой советник на 5-значную котировку, то слипадж будет 0.2 пункта. Уж точно будут ошибки.

Спасибо за дельные советы, принял во внимание. Ошибку устранил. Причина оказалась банальна: ДЦ Альпари, тип демо счета ECN,   открытие ордера с указным SL и TP запрещено. Надо открыть ордер потом его модифицировать.
 
всем бодрого время суток...  господа помогите пожалуйста, такая вот незадача.... тестирую эксперта на Альпари, работает же он на другом ДЦ, работал на демо три недели и результаты отличаются. Покопался немного (ну и конечно понервничал тоже..... пиии) и понял что показатели индикатора RSI, который используется в расчетах, немного отличается от тех который показывает он же но на Альпари. Неприятность..... разница в "микронах :)" нооо их достаточно чтоб изменить советника. Ребята пожалуйста подскажите как можно исправить такой вот пЭчаль, большое спасибо!!!
 
laveosa:
всем бодрого время суток...  господа помогите пожалуйста, такая вот незадача.... тестирую эксперта на Альпари, работает же он на другом ДЦ, работал на демо три недели и результаты отличаются. Покопался немного (ну и конечно понервничал тоже..... пиии) и понял что показатели индикатора RSI, который используется в расчетах, немного отличается от тех который показывает он же но на Альпари. Неприятность..... разница в "микронах :)" нооо их достаточно чтоб изменить советника. Ребята пожалуйста подскажите как можно исправить такой вот пЭчаль, большое спасибо!!!


Котитры разных ДЦ - отличаются. Демо - от реала - также. Показания индика - также. 

Надо тестить и оптить параметры экспа и индика на истории того ДЦ,  с которым "играть" собираетесь...  

Причём точить экспа под реал - в обяз (обработка ошибок и всё остальное...) 

 
В коде не работает StringSetChar.  Необходимо заменить ":" на "."  .

                        string    Object_Date_Secnd = TimeToStr(Object_Time,TIME_SECONDS);

                        for(int s1=0; s1<StringLen(Object_Date_Secnd); s1++) {
                           if(StringGetChar(Object_Date_Secnd,s1)==':' ) {
                              StringSetChar(Object_Date_Secnd,s1, '.');
                           }
                        }


- Почему не выполняется замена?

Спасибо!

 
получается что если ТС был отличен  на Альпари это не факт что он будет приносить такие же резолтыыы на другом ДЦ?  А как подгонять на другом ДЦ если там история не полная как в Альпари, например.  Ближе к телу, можно настроить индюка на другом ДЦ так чтоб он был идентичен тем результатам как на Альпари, например?
 
laveosa:
получается что если ТС был отличен  на Альпари это не факт что он будет приносить такие же резолтыыы на другом ДЦ?  А как подгонять на другом ДЦ если там история не полная как в Альпари, например.  Ближе к телу, можно настроить индюка на другом ДЦ так чтоб он был идентичен тем результатам как на Альпари, например?

Можно - всё... Была бы польза от такой настройки. Смотрите на истории от МетаКвотов.
Причина обращения: