Помощь в кодировании - страница 410

 

спасибо mladen. все работает идеально. теперь я кодер!!!

 
sunshineh:
Как я вижу, нет возможности нарисовать прямоугольник за кнопкой и определить, что нажатие на кнопку является Событием, а не прямоугольником...

Но у меня есть еще один вопрос:

Как я могу нарисовать горизонтальную линию с определенной длиной? Я пробовал с помощью OBJ_TREND, но одна сторона линии бесконечна или нулевая. Поэтому я не могу нарисовать горизонтальную линию от Bid-10 до Bid+10.

Есть ли у вас сейчас решение?

sunshineh

Установите свойство RAY (OBJPROP_RAY) линии тренда на false, и тогда она не будет расширяться до бесконечности.

 

Привет всем, если я хочу назначить разное магическое число для каждого ордера, который открывает советник, могу ли я использовать следующее :

extern int MagicNumber = 1000000;

if(Conditions)

{

SendOrder(OP_BUY,MagicNumber);

MagicNumber = MagicNumber+1;

}

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

Спасибо.

 
airquest:
Привет всем, если я хочу назначить другой магический номер для каждого ордера, открытого советником, могу ли я использовать следующее:

extern int MagicNumber = 1000000;

if(Conditions)

{

SendOrder(OP_BUY,MagicNumber);

MagicNumber = MagicNumber+1;

}

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

Спасибо.

Попробовал. Работает хорошо

 
airquest:
Привет всем, если я хочу назначить другой магический номер для каждого ордера, который открывается советником, могу ли я использовать следующее:

extern int MagicNumber = 1000000;

if(Conditions)

{

SendOrder(OP_BUY,MagicNumber);

MagicNumber = MagicNumber+1;

}

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

Спасибо.

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

 
mladen:
Это хорошо, но как вы определяете точное магическое число, которое вы хотите обработать один раз при открытии ордера?

Ну, немного сложно. В OnInit я сохранил исходное магическое число (1000000) в переменной int (OriginalMagic), а затем при вызове OrderSelect я фильтрую по уникальному MagicNumber и сохраняю переменные (OrderOpenPrice, OrderLots и т.д.) в массив, так что для каждого заказа индекс будет : MagicNumber - OriginalMagic (поэтому первый будет 0, затем 1 и т.д.). Смысл в том, чтобы сделать две вещи: 1) открывать только ограниченное количество ордеров (ArrayRange - это постоянное число (extern int MaxOpenTradesToManage) и цикл открытия ордеров не будет выполняться, если MagicNumber < OriginalMagic + MaxOpenTradesToManage - 1); 2) определить специфические (и различные) правила управления ордерами для каждого открытого ордера (что является причиной иметь уникальный MagicNr).

Младен, у меня к вам еще один вопрос, я видел в одном из ваших советников (Ichimoku 5.3.5, может это советник Mr. Tools, не уверен), что вы открываете ордера следующим образом:

int buyTicket = OrderSend(symbol,OP_BUY,lots,price,slippage,0,0,comment,magic,0,color);

if (buyTicket >= 0)

bool buyOrderMod = OrderModify(buyTicket,OrderOpenPrice(),STOPLOSS,TAKEPROFIT,0,color);

[/CODE]

Does it change something from just putting the OrderSend function with already defines SL and TP ? Is it better to open with 0,0 and then use OrderModify to set SL and TP ? :

[CODE]

OrderSend(symbol,OP_BUY,lots,price,slippage,STOPLOSS,TAKEPROFIT,comment,magic,0,color);

Спасибо за ответ. С наилучшими пожеланиями и счастливого Рождества.

 
airquest:
Ну, немного сложно. В OnInit я сохранил исходное магическое число (1000000) в переменной int (OriginalMagic), а затем при вызове OrderSelect я фильтрую по уникальному MagicNumber и сохраняю переменные (OrderOpenPrice, OrderLots и т.д.) в массив, так что для каждого ордера индекс будет : MagicNumber - OriginalMagic (поэтому первый будет 0, затем 1 и т.д.). Смысл в том, чтобы сделать две вещи: 1) открывать только ограниченное количество ордеров (ArrayRange - это постоянное число (extern int MaxOpenTradesToManage) и цикл открытия ордеров не будет выполняться, если MagicNumber < OriginalMagic + MaxOpenTradesToManage - 1); 2) определить специфические (и различные) правила управления ордерами для каждого открытого ордера (что является причиной иметь уникальный MagicNr).

Младен, у меня к вам еще один вопрос, я видел в одном из ваших советников (Ichimoku 5.3.5, может это советник Mr. Tools, не уверен), что вы открываете ордера следующим образом:

int buyTicket = OrderSend(symbol,OP_BUY,lots,price,slippage,0,0,comment,magic,0,color);

if (buyTicket >= 0)

bool buyOrderMod = OrderModify(buyTicket,OrderOpenPrice(),STOPLOSS,TAKEPROFIT,0,color);

[/CODE]

Does it change something from just putting the OrderSend function with already defines SL and TP ? Is it better to open with 0,0 and then use OrderModify to set SL and TP ? :

[CODE]

OrderSend(symbol,OP_BUY,lots,price,slippage,STOPLOSS,TAKEPROFIT,comment,magic,0,color);

Спасибо за ваш ответ. С наилучшими пожеланиями и счастливого Рождества.

airquest

Он не меняется. Но ...

Это должно быть сделано так для ECN/STP брокеров. Они не позволяют выставлять стоп-лосс и/или тейк-профит при открытии ордера, и тогда это нужно делать в два этапа.

 
mladen:
airquest Это не меняется. Но ... Это должно быть сделано таким образом для ECN/STP типа брокеров. Они не позволяют выставлять стоп лосс и/или тейк профит при открытии ордера, и тогда это нужно делать в два этапа

Хорошо, спасибо большое за подсказку. Для отложенных ордеров тоже?

 
airquest:
Хорошо, спасибо большое за совет. Для отложенных ордеров тоже?

Да, и для этих тоже

 

Помощь в кодировании

Здравствуйте Младен

Этот индикатор не работает в понедельник

"Google Translate"

Спасибо

Файлы:
Причина обращения: