Как кодировать? - страница 273

 

тейкпрофит не выполняется

Возможны две причины.

Во-первых, тейкпрофит может считаться слишком близким к цене открытия, чтобы брокер мог его принять.

Проверьте сделку, чтобы узнать, есть ли у тейкпрофита значение.

Во-вторых, сделки на продажу выходят по Ask, поэтому Ask должен достичь уровня тейкпрофита.

Каков спред у вашего брокера для этой пары и в это время?

Это приведет к тому, что фактический выход будет по Bid - Spread.

Роберт

 
LuisAY:

Я хотел бы знать, как прочитать эти обведенные голубым кружочки,

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

Заранее спасибо.

Имя индикатора не является комментарием.

Поскольку имя видно, вы можете использовать

double MaxValue, MinValue;

int WindowNum = WindowFind("Volume"); // возвращает -1, если не найден

if (WindowNum >= 0)

{

MaxValue = WindowPriceMax(WindowNum);

MinValue = WindowPriceMin(WindowNum);

}

Надеюсь, это поможет.

BTW, Когда вы открываете редактор MT4, есть окно под названием Navigator, в котором перечислены функции в MT4 с описанием и примерами их использования.

Роберт Хилл

Профессиональный программист MT4

 

[langtitle=de]тейкпрофит не исполнен[/langtitle]

MrPip:
Есть две возможные причины.

Сначала тейкпрофит может считаться слишком близким к цене открытия, чтобы брокер мог его принять.

Проверьте сделку, чтобы узнать, есть ли у тейкпрофита значение.

Во-вторых, сделки на продажу выходят по Ask, поэтому Ask должен достичь уровня тейкпрофита.

Каков спред у вашего брокера для этой пары и в это время?

Это приведет к тому, что фактический выход будет на уровне Bid - Spread.

Роберт

[lang=de]Спасибо за быстрый ответ.

У меня ECN брокер (FXOpen) (5 цифр). Я думаю, что вы правы относительно спреда. Но он имеет постоянное значение 102 (=(Ask - Bid)*(1/Point)) и не меняется все время при запуске тестера стратегий. Почему? На живых системах спред меняется почти постоянно. Кроме того, почему я не получаю OrderSend Error 130?

Спасибо за помощь[/lang].

 
MrPip:
Имя индикатора не является комментарием.

Поскольку имя видно, вы можете использовать

double MaxValue, MinValue;

int WindowNum = WindowFind("Volume"); // возвращает -1, если не найдено

if (WindowNum >= 0)

{

MaxValue = WindowPriceMax(WindowNum);

MinValue = WindowPriceMin(WindowNum);

}

Надеюсь, это поможет.

BTW, Когда вы открываете редактор MT4, есть окно под названием Navigator, в котором перечислены функции в MT4 с описанием и примерами их использования.

Роберт Хилл

Профессиональный программист MT4

Это именно то, что я искал, ...просто надеялся, что технические авторы файла справки имели здравый смысл, который вы показали в примере.

Другой вопрос: комментарий или заметка, которая служит именем в пользовательском индикаторе, называется "IndicatorShortName" и содержит значение, теперь я хотел бы прочитать это значение. Я мог бы найти способ обойти это, сделав переменную, которая также будет хранить это значение, когда я объявлю ее, но, по здравому смыслу, должен быть способ использовать значение "IndicatorShortName".

Спасибо

 

хаха, нашел это - кодирование, которое я сделал (но я не использую его сегодня)

он не должен выдавать ПРЕДЛОЖЕНИЕ, пока не будет наблюдаться консолидация (так что он вроде как умный - используется простая логика)

перефразируйте свои вопросы - не совсем понятно

tiny.cc/imtran

====

это копание, чтобы показать, что я немного кодирую.

Я потратил 1 месяц на этот индикатор (я создал его сам).

что он делает, так это использует белый текст комментария.

чтобы сказать мне, на каком ценовом уровне размещать лимитный ордер

даю вам эти 3 ссылки, если вы любите читать, откройте METAEDITOR IDE и изучите кодирование mq4 - нужно использовать какой-то лучший образец индикатора - это как

определить цвет и толщину

нарисовать что-то на графике

подсчитать количество свечей

запустить арифметическую (такую сложную) формулу

сделать больше вычислений и ifthenelse

большинство индикаторов MQ4 имеют такой формат, так что обратите внимание на >> нарисовать что-то на графике

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

http://tiny.cc/linsay3

http://tiny.cc/linsay2

http://tiny.cc/linsay1

Я не отдаю свои наработки просто так.

- Возможно, это не поможет в торговле (но я узнал много нового о MQ4, компилятор не так суров)

есть участник по имени WID - не уверен, насколько он хорош в кодировании, но если он хорош и придерживается соглашения о конфиденциальности, я думаю, что отдал бы ему весь индикатор (хотя это хорошая вещь для игры)

===

На самом деле, у меня есть один момент

COMMENT - ни одна другая функция MQ4 не проще, чем эта

очень похожа на PRINT ("оооо, форекс блеф, хорошее время для входа по цене" ; perfectpriceVariable);

т.е. ее можно использовать как ТЕКСТОВЫЙ советник, триггер, показывающий значение любой переменной и т.д.

Просто добавьте его к вашему любимому индикатору, затем вы можете заставить его появляться и исчезать и давать вам ТРИГГЕР

-- сравнение с несколькими часами назад и т.д. === все эти кодировки являются CHILDPLAY.

Однако, если у вас есть любимый индикатор, вы должны сначала понять этот любимый индикатор INSIDE -OUT.

например, какой СИГНАЛ вы ищете, как будет изменяться переменная.

ДО того, как вы сможете добавить строку комментария (.... ....) [ Я привел пример здесь, в ScreenCap].

Просто хотелось бы, чтобы больше людей любили кодировать, а не ныть - написав вот это

==== Предположим, что "IndicatorShortName" - это действительно переменная в MQ4.

вы могли бы поместить ее куда-нибудь в комментарий ("\n", "значение этой переменной приблизительно на этом баре свечи равно ", IndicatorShortName);

после этого вам придется искать "IndicatorShortName" во всем индикаторе MQ4, чтобы увидеть, что это такое!!! это переменная или она действительно появляется в индикаторе или это внешний вызов - внешний вызов может быть жестким, люди пишут что-то вроде этого, чтобы это выглядело как ООП

 
coollex:
[lang=de]Спасибо за быстрый ответ.

У меня ECN-брокер (FXOpen) (5 цифр). Я думаю, что вы правы относительно спреда. Но он имеет постоянное значение 102 (=(Ask - Bid)*(1/Point)) и не меняется все время при работе тестера стратегий. Почему? На живых системах спред меняется почти постоянно. Кроме того, почему я не получаю OrderSend Error 130?

Спасибо за помощь[/lang].

Это просто означает, что причина 1 не является проблемой.

Итак, по второй причине TP составляет 1.44743, а спред - 102 пункта. Это означает, что Bid должен быть 1.44641, когда Ask достигнет TP, чтобы выйти из сделки. Судя по вашему графику, похоже, что этого не произошло.

Помните, что бары на графике создаются на основе Bid.

Роберт

 

iCustom, индикатор и советник для открытия ордеров

Привет всем,

Я новичок в программировании на mql.

У меня есть функция в indi, которая определяет силу всех валют. что я хочу сделать, это открыть ордера на прибыльные пары. для этого у меня есть цикл 'for', который определяет максимально сильную валюту, а затем другой цикл 'for', который определяет самую слабую валюту.

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

пожалуйста, проверьте код функции ниже....

allcurr = все валюты

cpow = сила валюты

void pro (int allcurr, double cpow)

{

for (allcurr=0; allcurr<CurrencyCount; allcurr++)

{

if (cpow > 150 || cpow >160)

{

for (allcurr=0; allcurr<CurrencyCount; allcurr++)

{

if (cpow > 40 || cpow > 0)

{

I AM STUCK HERE

} // end for weak if

} // end for weak

} // end for max if

} // end for max

} // end void pro
 

iCustom, индикатор и советник для открытия ордеров

Привет всем,

Я новичок в программировании на mql.

У меня есть функция в indi, которая определяет силу всех валют. что я хочу сделать, это открыть ордера на прибыльные пары. для этого у меня есть цикл 'for', который определяет максимально сильную валюту, а затем другой цикл 'for', который определяет самую слабую валюту.

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

пожалуйста, проверьте код функции ниже....

allcurr = все валюты

cpow = сила валюты

void pro (int allcurr, double cpow)

{

for (allcurr=0; allcurr<CurrencyRepeat; allcurr++)

{

if (cpow > 150 || cpow >160)

{

for (allcurr=0; allcurr<CurrencyRepeat; allcurr++)

{

if (cpow > 40 || cpow > 0)

{

I AM STUCK HERE

} // end for weak if

} // end for weak

} // end for max if

} // end for max

} // end void pro
 

Изменение OrderComment?

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

Есть ли способ изменить OrderComment, после того как ордер был создан?

У меня есть советник, который создает отложенные ордера в ключевых точках, которые, вероятно, будут достигнуты, однако иногда эти ордера должны быть отменены/удалены из-за нежелательных быстрых движений на графиках, поэтому невозможно использовать номер тикета для идентификации каждого ордера, потому что каждый ордер ключевой точки может быть открыт и отменен/удален несколько раз, поэтому вместо этого советник использует уникальный OrderComment для идентификации каждого ордера, но время от времени компьютер, на котором работает советник, выходит из строя или обрывается интернет-соединение, что нарушает идентификацию ордеров ключевых точек, и поэтому было бы полезно изменить OrderComment, чтобы избежать ошибок, вызванных беспорядком, который создается после перезапуска советника без предварительного завершения предыдущего исполнения.

Очень запутанно, правда?

P.S. Магическое число используется для идентификации ордеров, созданных советником, поэтому я не могу использовать это число для идентификации каждого ордера в отдельности.

Если кто-нибудь может подсказать мне, есть ли способ изменить OrderComments, я был бы признателен,

Заранее благодарю.

 

Не знаю, правильно ли я вас понял, но в момент, когда вы"стеком" делаете что-то с буфером индикатора - вы должны придумать, какое значение вы хотите иметь в этом буфере/буферах.

Во-вторых, посмотрите на этот кусок кода:

if (cpow > 150 || cpow >160)

if (cpow > 40 || cpow > 0)

[/CODE]

this same effect will be when You change it for:

[CODE]

if (cpow > 150)

if (cpow > 0)

edit: Не знаю, какой эффект Вы хотите получить, но попробуйте использовать массивы - возможно, пригодится.

С большим уважением

Польский студент-компьютерщик с большим опытом работы на MQL может написать для Вас код.

пишите по почте: gaa1(at)poczta(dot)fm

Дешево, хорошо, быстро && и профессионально.