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

 

Помогите с комментариями в ordersend, пожалуйста

Нужна помощь, пожалуйста У меня есть советник, который имеет 4 различных критерия входа и хотел бы иметь возможность иметь комментарий в ordersend, чтобы дать мне знать, какой критерий входа был выполнен для любой конкретной позиции. Я пытался заставить это работать, но все, что я, кажется, могу сделать, это иметь список, то есть long1, long2, long3 и т.д. Я знаю, что мне нужно сделать что-то другое, чем то, что я делаю сейчас, но не могу придумать, что это может быть. Я приложил версию советника, которую я использую для экспериментов. Так что любая помощь в решении этой проблемы была бы замечательной. Ниже приведено то, что я сейчас вижу.

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Error opening BUY order : invalid function parameter value

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Взят сигнал Long4

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Long3 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Long2 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Long1 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Short4 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Взят сигнал Short3

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Взят сигнал Short2

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Short1 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: неверное количество лотов для функции OrderSend

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: взят сигнал Long4

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: взят сигнал Long3

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Long2 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Long1 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Сигнал Short4 взят

2007.12.21 21:57:22 euroform V 2.1-exp EURJPY,H1: Взят сигнал Short3

Спасибо

Бено

Файлы:
 
stevex33:
Привет, ребята,

У меня есть вопрос.

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

У меня есть идея в голове и основы того, как это должно работать, но мне нужна небольшая помощь.

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

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

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

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

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

с уважением,

Стив

Начните с самого начала, т.е. изучите MQL4. Скачайте электронные книги от CodersGuru, распечатайте их, если вы как я - не умеете читать с экрана, затем прочитайте их.

Прочитайте их снова, если не поняли с первого раза.

Потренируйтесь.

Если вы все еще не понимаете, проверьте как можно больше советников, посмотрите, есть ли сходство с вашим. Поищите объяснение каждой строки в книге CodersGuru, а затем попробуйте написать свою собственную.

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

Удачи.

 

что с ними не так?

Привет, ребята.

Мой советник сначала основывал свою фиксацию прибыли на трейлинг-стопе. Затем я добавил несколько фибо-точек и начал трейлинг после достижения последней фибо-точки. Но стратегия-тестер не работает с последней разработкой. Пожалуйста, помогите мне найти мою собственную ошибку в следующей программе.

Спасибо.

void CheckForTrailing()

{

double highest = High;

double lowest = Low;

double p1u = NormalizeDouble((OrderOpenPrice()-lowest)*0.618,4);

double tpb1 = p1u*10000;

double p1d = NormalizeDouble((highest-OrderOpenPrice())*0.618,4);

double tps1 = p1d*10000;

double p2u = NormalizeDouble((OrderOpenPrice()-lowest)*1,4);

double tpb2 = p2u*10000;

double p2d = NormalizeDouble((highest-OrderOpenPrice())*1,4);

double tps2 = p2d*10000;

double p3u = NormalizeDouble((OrderOpenPrice()-lowest)*1.618,4);

double tpb3 = p3u*10000;

double p3d = NormalizeDouble((highest-OrderOpenPrice())*1.618,4);

double tps3 = p3d*10000;

double p4u = NormalizeDouble((OrderOpenPrice()-lowest)*2.382,4);

double tpb4 = p4u*10000;

double p4d = NormalizeDouble((highest-OrderOpenPrice())*2.382,4);

double tps4 = p4d*10000;

double p5u = NormalizeDouble((OrderOpenPrice()-нижняя)*3.236,4);

double tpb5 = p5u*10000;

double p5d = NormalizeDouble((самая высокая-OrderOpenPrice())*3.236,4);

double tps5 = p5d*10000;

for(int i=0; i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

break;

if(OrderMagicNumber()!=magic || OrderSymbol()!=Symbol())

continue;

if(OrderType()<=OP_SELL)

{

if(OrderType()==OP_BUY && Bid>OrderOpenPrice())

{

if((Bid>=OrderOpenPrice()+Point*tpb1) && (OrderStopLoss()!=OrderOpenPrice())))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*tpb1,0,0,CLR_NONE);

return(0);

}

if((Bid>=OrderOpenPrice()+Point*tpb2) && (OrderStopLoss()!=OrderOpenPrice()+Point*tpb1))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*tpb2,0,0,CLR_NONE);

return(0);

}

if((Bid>=OrderOpenPrice()+Point*tpb3) && (OrderStopLoss()!=OrderOpenPrice()+Point*tpb2)))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*tpb3,0,0,CLR_NONE);

return(0);

}

if((Bid>=OrderOpenPrice()+Point*tpb4) && (OrderStopLoss()!=OrderOpenPrice()+Point*tpb3)))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*tpb4,0,0,CLR_NONE);

return(0);

}

if((Bid>=OrderOpenPrice()+Point*tpb5) && (OrderStopLoss()!=OrderOpenPrice()+Point*tpb4))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*tpb5,0,0,CLR_NONE);

return(0);

}

if((Bid>=OrderOpenPrice()+Point*(tpb5+ts)) && (OrderStopLoss()+Point*ts<Bid))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*ts,0,0,CLR_NONE);

return(0);

}

}

else if(OrderType()==OP_SELL && Ask<OrderOpenPrice())

{

if((Ask<=OrderOpenPrice()-Point*tps1) && (OrderStopLoss()!=OrderOpenPrice())))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*tps1,0,0,CLR_NONE);

return(0);

}

if((Ask<=OrderOpenPrice()-Point*tps2) && (OrderStopLoss()!=OrderOpenPrice()-Point*tps1)))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*tps2,0,0,CLR_NONE);

return(0);

}

if((Ask<=OrderOpenPrice()-Point*tps3) && (OrderStopLoss()!=OrderOpenPrice()-Point*tps2)))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*tps3,0,0,CLR_NONE);

return(0);

}

if((Ask<=OrderOpenPrice()-Point*tps4) && (OrderStopLoss()!=OrderOpenPrice()-Point*tps3)))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*tps4,0,0,CLR_NONE);

return(0);

}

if((Ask<=OrderOpenPrice()-Point*tps5) && (OrderStopLoss()!=OrderOpenPrice()-Point*tps4)))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*tps5,0,0,CLR_NONE);

return(0);

}

if((AskAsk))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*ts,0,0,CLR_NONE);

return(0);

}

}

}

}

}
 

Как это предотвратить????

MACDI на 4-часовом графике показывает положительное значение, но если я использую его как индикатор, то получаю продажу, потому что MACDI на 1-минутном графике может стать отрицательным на короткий промежуток времени, но не отражается на 4-часовом графике. Как мне закодировать это, чтобы моя программа получала среднее часовое значение, а не результаты 1-Min.

Дэйв

 
 

какой низкий?

Я думаю, вы забыли, какой минимум вы используете в качестве currentlow. Видите ли, я не могу представить, имеете ли вы в виду минимум текущего бара. Если вы имеете в виду то, что я думаю, попробуйте использовать iLowest[]. Посмотрите его в словаре Metaeditor.

 

пропущенный пункт

Извините, я не заметил, что вы поставили currentlow = 1000;. Но предложение остается в силе. Смотрите, currentlow = 1000; 1000 чего? 1.0000, как в GBP/USD? 1000 пунктов, откуда? Итак, все то же самое, используйте iLowest[] для currentlow. Думаю, это будет работать нормально.

 

iLowest

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

Спасибо за ваш быстрый ответ.

То, чего я пытаюсь достичь, основано не на максимуме или минимуме любого таймфрейма, а на самой низкой точке перед ретрейсментом Ret1 (75 пунктов). Для начала я сосредоточился на EUR/USD.

CurrentLow должен отслеживать самую низкую точку перед коррекцией.

Ниже приведен пример того, чего я пытаюсь достичь.

a) Допустим, мы открываем советника, цена составляет 1.4000 и колеблется между 1.4030 и 1.3970, прежде чем перейти к 1.4045. Я хочу, чтобы CurrentLow был равен 1.3970 (самая низкая точка) и чтобы первый ордер на продажу был установлен на 1.4045 (Entry1) с SL 1.4195 (SL1 =150 пунктов) и Take Profit (TPA = 75 пунктов) на 1.3970.

б) если цена продолжит расти до 1.4120 (Entry2), я бы хотел установить второй ордер на продажу с тейк-профитом (TPB =76 пунктов) 1.4044 и SL 1.4195 (такой же, как и в первом ордере).

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

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

Любая помощь от Sendra или кого-либо еще будет высоко оценена.

Спасибо

Putz

 

i Lowest и CurrentLow

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

Чтобы ответить на ваш вопрос о CurrentLow, я задал ему значение 1000, так как оно всегда будет больше любой цены E/U. Это нужно для того, чтобы убедиться, что при открытии он берет первую цену ЕС. Если бы я установил значение 0, цена никогда не была бы ниже, и, следовательно, сделки никогда бы не состоялись.

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

Спасибо

Putz

 

Код - торговля один раз в день

Может ли кто-нибудь помочь мне со скриптом или ea, который заставляет только 1 сделку в день?

Спасибо большое