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

 
neisseria:
Пытался создать советник, на основе монетки, орел бай, решек селл. Но он не работает. При тестировании в окне появляются надписи: При открытии ордера ошибка 131, в приложении посмотрел - это не правильный объем. Внимательно посмотрел, ошибки не могу найти. Везде точка стоит, для отделения целой части, а не запятая. Помогите пожалуйста. Код в файле.
А счет позволяет лот 0.01? Может, минимальный лот 0.1?
 
neisseria:
Пытался создать советник, на основе монетки, орел бай, решек селл. Но он не работает. При тестировании в окне появляются надписи: При открытии ордера ошибка 131, в приложении посмотрел - это не правильный объем. Внимательно посмотрел, ошибки не могу найти. Везде точка стоит, для отделения целой части, а не запятая. Помогите пожалуйста. Код в файле.


используйте:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Минимально возможный объём лота

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Минимальный шаг изменения лота

Lot lдолжен быть >= MinLot и нормализован c помощью Lot=NormalizeDouble(Lot,Dig);

где Dig = Кол-во_знаков_после_запятой StepLota, т.е StepLot=0.01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

К примеру при MinLot=0.1 и StepLot=0.01:

Lot может быть 0.1, 0.11,0.12 и т.д. Но не может быть 0.99, 0.98 и тем более не может быть 0.998,0.999, 0.111,0.101

 
Sepulca:


используйте:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Минимально возможный объём лота

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Минимальный шаг изменения лота

Lot lдолжен быть >= MinLot и нормализован c помощью Lot=NormalizeDouble(Lot,Dig);

где Dig = Кол-во_знаков_после_запятой StepLota, т.е StepLot=0.01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

К примеру при MinLot=0.1 и StepLot=0.01:

Lot может быть 0.1, 0.11,0.12 и т.д. Но не может быть 0.99, 0.98 и тем более не может быть 0.998,0.999, 0.111,0.101


К примеру при MinLot=0.1 и StepLot=0.01:

Lot может быть 0.1, 0.11,0.12 и т.д. Но не может быть 0.99, 0.98

Да ну... неужели?

88 или 89 раз увеличьте лот на минимальный шаг. К примеру - лот каждой последующей открываемой позиции должен быть увеличен на минимальный шаг. Т.е. тупо прибавлять к лоту прошлой позиции минимальный шаг изменения лота. 98-я открываемая позиция будет иметь лот 0.98, соответственно, лот 99-й позиции будет увеличен на минимальный шаг 0.98+0.01=0.99...

Вы считаете, что ДЦ не даст открыться таким лотом?

 
artmedia70:

К примеру при MinLot=0.1 и StepLot=0.01:

Lot может быть 0.1, 0.11,0.12 и т.д. Но не может быть 0.99, 0.98

Да ну... неужели?

88 или 89 раз увеличьте лот на минимальный шаг. К примеру - лот каждой последующей открываемой позиции должен быть увеличен на минимальный шаг. Т.е. тупо прибавлять к лоту прошлой позиции минимальный шаг изменения лота. 98-я открываемая позиция будет иметь лот 0.98, соответственно, лот 99-й позиции будет увеличен на минимальный шаг 0.98+0.01=0.99...

Вы считаете, что ДЦ не даст открыться таким лотом?


Чорт .... ошибся конечно. не может быть 0.09, 0.08.

А тупо или не тупо - это решать тому кто пишет советника.

 
kellin:
Нет, открываться конечно нужно по ордеру или бай или селл на открытие очередного, или одного из следующих баров. Да и закрываться тоже планирую по ордеру, назначая его по количеству пунктов от открытия.

Позже (на выходных) выложу сюда код для открытия рыночного ордера - либо бай, либо селл (по Вашему выбору), при открытии новой свечи.
 
Sepulca:


используйте:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Минимально возможный объём лота

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Минимальный шаг изменения лота

Lot lдолжен быть >= MinLot и нормализован c помощью Lot=NormalizeDouble(Lot,Dig);

где Dig = Кол-во_знаков_после_запятой StepLota, т.е StepLot=0.01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

К примеру при MinLot=0.1 и StepLot=0.01:

Lot может быть 0.1, 0.11,0.12 и т.д. Но не может быть 0.99, 0.98 и тем более не может быть 0.998,0.999, 0.111,0.101

Эту информацию я и так знаю. В моем брокере мин лот 0.01, шаг 0.01. Я для успокоения совести менял его и на 0.1 и на 1 лот, не выходит ничего, ошибка в чем то другом.
 

Кстати этот советник я ясен пень не намерен использовать, просто я учусь языку программирования. По сути, я прикола ради решил посмотреть как он будет работать на тестере, просто читал как то, что генератор случайных чисел выдает не такие уж и случайные числа, дескать он повторяется. Проблема похоже не в неправильном написании числа, а в алгоритме, только вот в чем она заключается?

 
T-G:
Помогите с задачкой.
Вопрос такой у меня сова мартин, открывает колена через заданное кол-во пунктов, но с новым маджиком. Получается открывает по сигналу1 один-три ордера с маджиком = 1, далее минус следующее колено по сигналу2 открываю один-три ордера с маджиком 2 и так далее.
Получается каждое колено идет по 1-3 ордера со своим меджиком.

Теперь суть вопроса в чем, как посчитать в цикле ордера каждого меджика например? я пытался так

А если так:

int Count() {
   int i, Сounts[100];
   
   for (i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>Magic+100)   continue;
         if (OrderType()>1)                  continue;
         Сounts[OrderMagicNumber()]++;
         }
      }//for 
   Comment(10, Сounts[0] +"="+ Сounts[1] +"="+ Сounts[2]);
}

Не проверял, так, на коленке набросал...

 
artmedia70:

А если так:

Не проверял, так, на коленке набросал...

непомогло но вы натолкнули меня на правильный ответ, уже все сделал, спасибо
 
Подскажите. если кто знает, такой вопрос: нужен зацикленный скрипт который бы с периодичностью раз в 0,5 сек. "нажимал" кнопку "Обновление" на текущем графике с переинициализацией индикаторов. Попробовал сделать зацикленный скрипт с использованием WindowRedraw() и Sleep(500), но переинициализации индикаторов не происходит.