нужна помощь в кодировании, пожалуйста - страница 4

 

вы говорите ....... "Ваше проскальзывание не скорректировано для 4/5-значного брокера ".

Я говорю ...... Я понимаю, что это в пунктах или пунктах или как угодно - уже.

т.е. 3 - это правильно, а 3*mypoint - неправильно.

Кто-нибудь может подтвердить это?


RaptorUK:

Хорошо, небольшая помощь. . .

Найдите эту часть в вашем коде и измените ее на эту. ...

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

Bars не является надежным, это плохая идея использовать Bars... вы должны использовать Time вместо этого.

Ваше проскальзывание не корректируется для 4/5-значных брокеров ... как и ваш TP или SL.

Если вы сделаете SL маленьким, вы получите ошибку 130, потому что вы не проверяете, не слишком ли он близок, и не учитываете спред.

Является ли ваш брокер ECN-брокером? Вы не можете установить SL и или TP, когда вы размещаете рыночный ордер у ECN-брокера, вам нужно ввести код OredrModify(), чтобы добавить SL и или TP после размещения ордера. ...

Мне продолжать? Это элементарные вещи... эти вопросы поднимаются на этом форуме изо дня в день...

И вы не понимаете многого из этого, потому что вы на самом деле ничего не кодировали ... вы использовали чужой код . ... " Построитель советников". Есть только один короткий путь: Работа

 
mrmedia:

вы говорите ....... "Ваше проскальзывание не скорректировано для 4/5-значного брокера ".

Я говорю ...... Я понимаю, что это в пунктах или пипсах или как угодно - уже.

т.е. 3 - это правильно, а 3*mypoint - неправильно.

Кто-нибудь может подтвердить это?




Читайте здесь https://www.mql5.com/en/forum/138912
 
mrmedia:

вы говорите ....... "Ваше проскальзывание не корректируется для 4/5-значного брокера ".

Я говорю ...... Я понимаю, что это в пунктах или пипсах или как угодно - уже

Проскальзывание = 3 означает 0,3 пункта на 5-ти значном брокере и 3 пункта на 4-х значном брокере.
 
RaptorUK:
Проскальзывание = 3 означает 0,3 пункта на 5-значном брокере и 3 пункта на 4-значном брокере.

И снова все ясно как болото.

err 0.98330

проскальзывание = 3 = где заполнение?

проскальзывание = 3*SymPoints (5-ти значный брокер) = где заполнение?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

if( SymPoints == 0.001 ) { SymPoints = 0.01; SymDigits = 3; }

else if( SymPoints == 0.00001 ) { SymPoints = 0.0001; SymDigits = 5;

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 
mrmedia:

И снова все ясно как болото.

err 0.98330

проскальзывание = 3 = где заполнение?

проскальзывание = 3*SymPoints (5-ти значный брокер) = где заполнение?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

if( SymPoints == 0.001 ) { SymPoints = 0.01; SymDigits = 3; }

else if( SymPoints == 0.00001 ) { SymPoints = 0.0001; SymDigits = 5;

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Посмотрите в документации к OrderSend, какой тип Slippage? Как можетиметь смыслslippage = 3*SymPoints?
 
Допустимое проскальзывание на цене всегда равно указанному вами проскальзыванию(int), умноженному на внутреннюю переменную Point. Значение Point меняется между 4 и 5 разрядными брокерами.
 
не знаю
 
weinux:
Я не знаю.
Спасибо, это была большая помощь.
 
Вы не можете использовать symPoints для проскальзывания int(3 * symPoints) == 0 нет проскальзывания.
//++++ These are adjusted for 5 digit brokers.
int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.015      0.0150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)
int     init(){                                             OptInitialization();
     if (Digits % 2 == 1){      // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262
                pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
    } else {    pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//---- These are adjusted for 5 digit brokers.
    /* On ECN brokers you must open first and THEN set stops
    int ticket = OrderSend(..., 0,0,...)
    if (ticket < 0)
       Alert("OrderSend failed: ", GetLastError());
    else if (!OrderSelect(ticket, SELECT_BY_TICKET))
       Alert("OrderSelect failed: ", GetLastError());
    else if (!OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0)
       Alert("OrderModify failed: ", GetLastError());
     */
Причина обращения: