Спрашивайте! - страница 105

 

Вопрос для кодеров

Привет

Я написал Alert, но он работает только когда я открываю окно с моим индикатором. Он работает только тогда, когда я прыгаю между окнами графиков, другими словами, когда я прыгаю между временными уровнями графиков. Похоже, что индикатор не может считать, когда он работает. Как я могу решить мою проблему? Нужна помощь. Связано ли это с Indicatorcounted? Нужно ли что-то сделать в параметре Alert. Как это сделать?

Должен ли я использовать что-то вроде:

double

? = ObjectGetValueByShift(string name, int shift));

if (???????????)

Alert("Pattern on " + Symbol() + " " + Period());

Pucio

 

Глупый вопрос...

Кто-нибудь? Пытаюсь создать, наверное, самую простую инди всех времён и облажался...

Входные данные: Последнее значение тика (1)пары X и (2) пары Y.

(обе "пары" CDF ..т.е. 3 буквенных символа))

Выход 1: Вывести на экран X-Y

Выход 2: Построить в окне индикатора MA из X-Y.

.не спрашивайте...LoL

 

Оповещение один раз

Здравствуйте,

Пожалуйста, не могли бы вы написать пример кода, где Alert будет только один раз.

Когда объект появляется на графике и нужно, чтобы Alert был один раз.

Pucio

 
Pucio:
Здравствуйте,

Пожалуйста, не могли бы вы написать пример кода, где Alert будет только один раз.

Когда объект появляется на графике, и вы хотите, чтобы Alert был один раз.

Pucio

Возможно, вы могли бы использовать этот кусок кода: https://www.mql5.com/en/forum/general.

 

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

double Trend[];

...

SetIndexBuffer(0,Trend);

...

Trend[0]=UpRating;

return(0);

}

Я не знаю, работает ли это, но я знаю, что все надписи индикатора исчезли. Есть идеи по этому поводу?

 

нужна помощь в модификации

Здравствуйте, товарищи трейдеры

Мне нужна помощь с этим кодом.

Текущая функция заключается в закрытии первых открытых ордеров по времени и любых последующих ордеров, то есть может быть закрыто более 2 ордеров в одно и то же время.

Вопрос: как мне изменить его, чтобы он закрывал ТОЛЬКО ПЕРВЫЕ 2 открытых ордера по времени.

вот код.

спасибо за помощь

//+------------------------------------------------------------------+

//| Close Condition Type 2 |

//+------------------------------------------------------------------+

void CheckCloseConditionType2()

{

int Orders[];

int i, j;

ArrayResize(Orders, 0);

int cnt = OrdersTotal();

for (i=0; i < cnt; i++)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != Magic) continue;

int type = OrderType();

if (type == OP_BUY || type == OP_SELL)

{

int size = ArraySize(Orders);

ArrayResize(Orders, size+1);

Orders = OrderTicket();

}

}

//-----

size = ArraySize(Orders);

for (i=0; i < size; i++)

{

if (!OrderSelect(Orders, SELECT_BY_TICKET)) continue;

if (OrderCloseTime() > 0) continue;

datetime tm1 = OrderOpenTime();

for (j=i+1; j < size; j++)

{

if (!OrderSelect(Orders[j], SELECT_BY_TICKET)) continue;

if (OrderCloseTime() > 0) continue;

datetime tm2 = OrderOpenTime();

if (tm1 > tm2)

{

int ticket = Orders;

Orders = Orders[j];

Orders[j] = ticket;

}

}

}

//-----

for (i = size-1; i >= 1; i--)

{

double Profit = ArrayGetOrdersProfit(Orders);

if ((Profit >= TotalTakeProfit && TotalTakeProfit > 0) || (Profit >= Profit2Exit && Profit2Exit > 0))

{

Print("[Enter] Закрытие по условию Type2");

string msg1 = "";

string msg2 = "";

double P;

double T.P = 0;

for (j=0; j < size; j++)

{

if (Orders[j] == -1) continue;

if (!OrderSelect(Orders[j], SELECT_BY_TICKET)) continue;

if (OrderCloseTime() > 0) continue;

if (StringLen(msg1) > 0) msg1 = msg1 + " + ";

msg1 = msg1 + "order " +Orders[j];

GetOrderProfit(Orders[j], P);

if (StringLen(msg2) > 0) msg2 = msg2 + " + ";

msg2 = msg2 +DoubleToStr(P, 2);

T.P += P;

}

Print("Close: " + msg1);

Print("Прибыль: " + msg2 + " = " + DoubleToStr(T.P, 2));

ArrayCloseOrders(Orders);

Print("[Exit] Закрытие по условию Type2");

return;

}

Orders = -1;

}

}

 

Как подсчитать количество пунктов

Здравствуйте,

Я понял, что после того, как рынок совершил большое движение (восходящий или нисходящий тренд). Оставшийся рынок является рискованным для торговли. Я пытаюсь запрограммировать советника, чтобы он не входил в сделки, скажем, после большого движения примерно на 90 пунктов.

Мне нужно знать, как рассчитать количество пунктов от первого бара в 8 утра (открытие рынка в Лондоне) до текущего бара. Если рынок уже сдвинулся более чем на 90 пунктов, я не буду принимать никаких сделок.

Может ли кто-нибудь написать несколько строк, чтобы дать мне подсказку? Большое спасибо и благодарю.

Шек

 
yyc196:
Привет,

Я понял, что после того, как рынок совершил большое движение (восходящий или нисходящий тренд). Оставшийся рынок является рискованным для торговли. Я пытаюсь запрограммировать советника, чтобы он не входил в сделки, скажем, после большого движения примерно на 90 пунктов.

Мне нужно знать, как рассчитать количество пунктов от первого бара в 8 утра (открытие рынка в Лондоне) до текущего бара. Если рынок уже сдвинулся более чем на 90 пунктов, я не буду принимать никаких сделок.

Может ли кто-нибудь написать несколько строк, чтобы дать мне подсказку? Большое спасибо и благодарю.

Шек

Если необходимо, проверьте сначала, что вы находитесь позже 8 утра:

if(Hour() < 8) return;[/PHP]

Then, find the max and min of the current day. (if its ok for you, its easier than from 8 am): [PHP]double Max = iHigh(Symbol(), PERIOD_D1, 0);

double Min = iLow(Symbol(), PERIOD_D1, 0);

int Range = (Max - Min) / Point;

if(Range > 90) return;

...

 

Я пытаюсь добавить новую функцию в этот индикатор High_Low (Zigzag) V2, чтобы каждый раз, когда он формирует новый high-low, ZZ предупреждал меня. Не знаю, где ошибка. Инди вместо этого не отображается на моем экране. Кто-нибудь? Помогите мне, пожалуйста... Я новичок в кодировании, пожалуйста, уточните то, что я сделал, чтобы инди делала то, что я хочу в приведенном выше примере. Вот код.

high_low_v2_zigzag_with_alert.mq4

 

Здравствуйте,

Как нарисовать фон прямоугольника? Я имею ввиду через кондинг. Я знаю, что используется ObjectCreate(), но не знаю, как написать это так, как я должен.