Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А, я вижу проблему... вы установили скрипт для размещения ордера "BUY" вместо того, чтобы изменить внешнюю переменную на BUY STOP... вот почему он разместил рыночный ордер.
Из вашего сообщения:
Попробуйте BUY STOP.
Я получаю 0.12 лота для EURJPY на демо-счете, пополненном на $2300 USD.
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: attempted OP_BUYSTOP 0.12000000 lots @115.84000000 sl:115.68900000 tp:115.88500000
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: Текущий EquityAtRisk = $22.44, текущий размер лота = 0.12 и цель прибыли = $6.69 для соотношения прибыли и убытков 0.3:1
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: Максимально допустимый EquityAtRisk = $23.00 и Максимальный рассчитанный размер лота = 0.123
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1 входные данные: Order_Type="BUY STOP"; OpenBidPrice=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=false;
Я также сделал пример с бай-стопом NZDJPY:
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: Текущий EquityAtRisk = $22.90, текущий размер лота = 0.1 и цель прибыли = $17.45 для соотношения прибыли и убытков 0.8:1
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: Максимально допустимый EquityAtRisk = $23.00 и Максимальный рассчитанный размер лота = 0.1004
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1 inputs: Order_Type="BUY STOP"; OpenBidPrice=64.297; StopLossBidPrice=64.134; TakeProfitBidPrice=64.46; MaxPercentEquityAtRisk=1; MinLotOverRide=false;
Теперь цена ордера на вход 64.297 была слишком близка к текущей рыночной цене, поэтому программа orderreliable переместила цену входа на 64.319, но я все равно получил разумный размер лота 0.10.
На данный момент я вынужден сделать вывод, что в вашем коде что-то не так в том, как вы реализовали включаемые файлы и/или как вы используете выходы. Вам придется загрузить код для проверки, чтобы я смог разобраться с этим дальше.
Да, это демо-счет, номинированный в долларах США, кредитное плечо 1:100. Хорошо, я только что запустил его на EURJPY в качестве BUY STOP, похоже, на этот раз мы получили хорошие цифры. В журнале эксперта написано:
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: удалено
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: uninit reason 0
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: open #155719095 buy stop 0.11 EURJPY at 115.843 sl: 115.689 tp: 115.885 ok
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: attempted OP_BUYSTOP 0.11000000 lots @115.84300000 sl:115.68900000 tp:115.88500000
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: Текущий EquityAtRisk = $20.95, текущий размер лота = 0.11 и цель прибыли = $5.71 для соотношения прибыли и убытков 0.3:1
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: Максимально допустимый EquityAtRisk = $22.73 и Максимальный рассчитанный размер лота = 0.1193
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1 входные данные: Order_Type="BUY STOP"; OpenBidPrice=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=false;
2010.11.04 21:36:23 Assisted_Order_Script_2010.11.01 EURJPY,H1: успешно загружен
2010.11.04 21:34:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: удален
2010.11.04 21:34:11 Assisted_Order_Script_2010.11.01 EURJPY,H1: успешно загружен
... и он разместил отложенный ордер BUY STOP размером 0.11 лота. отлично. Да, похоже, что-то "намудрили" в моем коде, как вы говорите... lol. Я был очень осторожен, когда вставлял ваш код... что это может быть? Хорошо, я проведу отладку здесь и дам вам знать. Извините за беспокойство, Филипп!
Спасибо
Шон
Должен ли я начать заново с новой версии, которую вы только что опубликовали, Филипп?
Шон
Имеет смысл использовать самые последние.
Здравствуйте, Филипп, я собирался снова сделать операцию на своем советнике, чтобы обновить его до вашей последней версии, которую вы опубликовали несколько дней назад, но после повторного прочтения этого сообщения... оно оставило у меня довольно много вопросов. Я подумал, что должен сначала задать их вам, прежде чем рвать советника:
(1) Вы упомянули, что есть 2 новых включаемых файла:
Analyze_Currency_Symbol_2010.10.29.mqh (34.54 KB)
Trade_Position_Management_2010.10.29.mqh (26.68 KB)
... А как насчет старого StopLoss_Manager_2010.05.24.mqh? Этот файл больше не нужен в вашей новой версии?
(2) Где вы говорите:
"Шаг 2: Добавьте следующее в верхнюю часть вашего советника, чтобы он имел доступ к функциям вызова, содержащимся в прикрепленных файлах
#include <OrderReliable_2010.10.12.mqh>
#include <Trade_Position_Management_2010.10.29.mqh>".
... Это новая версия или OrderReliable? Я использовал LibOrderReliable.mqh. Что-то изменилось в нем? Также, разве нам не нужно включить новый файл Analyze_Currency_Symbol_2010.10.29.mqh?
(3) В этой строке кода вы говорите добавить при использовании вашей новой версии:
double CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType);
... Что такое OpenPrice_ND и StopLossPrice_ND? Это переменные, которые я должен объявить, или они встроены где-то в ваших включаемых файлах? Также в этой новой версии вашей функции LotSize количество параметров и их порядок довольно сильно изменились, не так ли? Вызов функции LotSize в вашей предыдущей версии был следующим:
CurrentLotSize=LotSize(CurrentEquityAtRisk,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross);
(4) Я заметил, что в своем коде, используя вашу предыдущую версию, я присвоил CurrentOrderType=OP_BUY; в действительности я делаю стоп-приказ на покупку. Может ли это иметь значение?
Извините за назойливость, но я просто в некотором недоумении от этих вещей.
Спасибо
Шон
(1) You mention there's 2 new include files:
Analyze_Currency_Symbol_2010.10.29.mqh (34.54 KB)
Trade_Position_Management_2010.10.29.mqh (26.68 KB)
... А как насчет старого StopLoss_Manager_2010.05.24.mqh? Этот файл больше не нужен в вашей новой версии?
Я действительно не уверен, почему я добавил эту часть в свое первоначальное сообщение, кроме как для того, чтобы конечный пользователь имел полный набор файлов для использования.
Я лично использую обновленную версию этого менеджера стоплоссов, но это не имеет никакого отношения к данной теме, вы должны применять те процедуры стоплоссов, которые вы предпочитаете использовать. Код, который я загрузил в этой теме, не зависит от включаемого файла стоплосса, но он зависит от того, насколько правильно вы настроите свой код для определения цены стоплосса, чтобы вы могли отправить ее в функцию вызова equityatrisk.
(2) Где вы говорите:
"Шаг 2: Добавьте следующее в верхнюю часть вашего советника, чтобы он имел доступ к функциям вызова, содержащимся в прикрепленных файлах
#include <OrderReliable_2010.10.12.mqh>.
#include <Trade_Position_Management_2010.10.29.mqh>".
... это новая версия или OrderReliable? Я использовал LibOrderReliable.mqh. Что-то изменилось в нем? Также, разве нам не нужно включить новый файл Analyze_Currency_Symbol_2010.10.29.mqh?
Я модифицировал новую версию так, чтобы она прозрачно работала с брокерами типа ecn. Посылайте ваши ордера через ordersendreliable, и не имеет значения, принимает ли брокер SL и TP на рыночные ордера, скрипт orderreliable сделает это за вас.
(3) В этой строке кода вы говорите добавить при использовании вашей новой версии:
double CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType);
... Что такое OpenPrice_ND и StopLossPrice_ND? Это переменные, которые я должен объявить, или они встроены где-то в ваших включаемых файлах? Также в этой новой версии вашей функции LotSize количество параметров и их порядок довольно сильно изменились, не так ли? Вызов функции LotSize в вашей предыдущей версии был:
В качестве альтернативы вы можете переименовать мои переменные в те, которые вы уже используете. Рассматривайте эти переменные как заполнители, подставляйте свои переменные там, где это необходимо.
Это все хорошие вопросы, если вы не задаете их, вы не можете ожидать, что научитесь ;)
Я действительно не уверен, зачем я добавил эту часть в свой первоначальный пост, кроме как для того, чтобы конечный пользователь имел полный набор файлов для использования.
Я лично использую обновленную версию этого стоплосс-менеджера, но это не имеет никакого отношения к данной теме, вы должны применять те процедуры стоплосса, которые предпочитаете использовать. Код, который я загрузил в этой теме, не зависит от включаемого файла стоплосса, но он зависит от того, насколько правильно вы настроите свой код для определения цены стоплосса, чтобы вы могли отправить ее в функцию вызова equityatrisk.
>>> ХОРОШО! У меня есть собственные стоплоссы, так что мне это не нужно - я удалю это!
Это новая версия, я разместил ссылку на нее в нижней части моего сообщения на первой странице этой темы (я бы дал ссылку на нее, но поиск сломан, аргх!).Я модифицировал новую версию так, чтобы она прозрачно работала с брокерами типа ecn. Посылайте ваши ордера через ordersendreliable и не имеет значения, принимает ли брокер SL и TP на рыночные ордера, скрипт orderreliable сделает это за вас.
>>> Хорошо, я уже использую OrderSendReliable2Step, поэтому я просто оставлю свой код как есть, используя существующий LibOrderReliable.mqh. Тем не менее, разве нам не нужно включить новый файл Analyze_Currency_Symbol_2010.10.29.mqh тоже?
Да, это переменные, которые вы должны объявить в какой-то момент вашего кода и присвоить им рыночные цены, по которым вы хотите открыть новую позицию (OpenPrice_ND) и цену стоплосса (StopLossPrice_ND).
В качестве альтернативы вы можете переименовать мои переменные в те, которые вы уже используете. Рассматривайте эти переменные как заполнители, подставляйте свои переменные там, где это необходимо.
>>> Понял, так я и думал. Мне кажется, вы пропустили этот мой комментарий --> "Также в новой версии вашей функции LotSize количество параметров и их порядок довольно сильно изменились, не так ли?".
Это не имеет никакого значения. Важно лишь то, что вы правильно передаете ordertype в соответствующие функции вызова. Они уже закодированы, чтобы делать правильные вещи в зависимости от типа ордера. Если вы не передадите правильный ordertype в функцию вызова, то вы обязательно получите недействительные результаты от самих функций вызова.
>>> ХОРОШО!
Это все хорошие вопросы, если вы не задаете их, вы не можете ожидать, что научитесь ;)
>>> Я пытаюсь! Спасибо, Филипп.
Shawn
>>> не нужно ли нам включить новый файл Analyze_Currency_Symbol_2010.10.29.mqh?
Не в вашем советнике, но вам нужен этот файл в вашем каталоге include, потому что он вызывается из файла include Trade Position Management.
Имея #include <Trade_Position_Management_2010.10.29.mqh> в своем советнике, вы уже связали оба файла - Trade_Position_Management_2010.10.29.mqh и Analyze_Currency_Symbol_2010.10.29.mqh.
>>>Также в новой версии вашей функции LotSize количество параметров и их порядок довольно сильно изменились, не так ли
Вам больше не нужно основываться на CurrentSymbolType и CurrentCounterPairForCross. Теперь это обрабатывается внутренне.
Если вы заглянете в файл Trade Position, то увидите раздел equityatrisk, там есть комментарии по использованию функции. Они могут помочь, хотя не уверен, насколько они понятны.
Это ошибка, которая произошла только со мной?
Я не могу скомпилировать ни один файл с MetaEditor mq4, если я поместил строку с # include.
Я также не смог скомпилировать файлы mq4, которые имеют строку # include в коде.
Только включает строки
# Include <stderror.mqh>
# Include <stdlib.mqh>
# Include <WinUser32.mqh>.