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

 
denis68:
matrixebiz, что вы имеете в виду под удалением этих двух строк; и как мне это сделать, я не могу войти в код индикатора AC, который я пробовал,

Вы открываете Accelerator.mq4 в MetaEditor (он находится в папке Indicators) и ставите // перед этими двумя строками, затем сохраняете под новым именем AcceleratorMod.mq4 и нажимаете компиляцию.

Файлы:
 
hiachiever:
Нет, это неверно.

В цикле for вы начинаете с 6 и уменьшаете до 1. Это означает, что в последнем цикле цикла for выполняется проверка "if (i == 1) qqeacross = True;". В итоге, если произошел qqeacross, то на выходе будет истина.

Единственная проблема, которая может возникнуть, это если qqeacross был установлен в true в предыдущем цикле. Чтобы решить эту проблему, перед циклом for нужно установить qqeacross = false;. Таким образом вы сможете убедиться, что если qqeacross = true, то это значение было установлено только что завершившимся циклом.

Ваше здоровье,

hiachiever

Значит, даже если будет сказано "if (i == 1) qqeacross = True;", а затем i=4 (из-за обратного отсчета), qqeacross все равно будет = True?

 

Спасибо hiachiever!

hiachiever:
Способ сделать это - создать переменную в глобальной области видимости (т.е. до init)

например,

int BarCount;

int init ()

Затем в коде стоп-лосса используйте следующее:

if (BarCount<Bars)

{

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));

StopLossBars++;

BarCount=Bars;

}

Это увеличит StopLossBars на 1 на каждом новом баре.

Единственным дополнением к вашему коду будет возврат 'StopLossBars' к исходному значению по умолчанию при открытии новой сделки.

Ваше здоровье,

Hiachiever

Спасибо, hiachiever, это было очень любезно с вашей стороны помочь, хотя я хотел бы попросить еще об одной небольшой услуге.

Я думаю, что понимаю, как работает ваш код, и уверен, что могу скопировать его в свой советник . Однако я не уверен, как вернуть StopLossBars к их умолчанию. Это код в конце советника для перехода в длинную или короткую позицию:

void goLong()

{

int ticket = OrderSend(Symbol(),OP_BUY,GetLots(100),Ask,maxSlippage,0,0,"Long",MagicNumber,0,Green);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

}

void goShort()

{

int ticket = OrderSend(Symbol(),OP_SELL,GetLots(100),Bid,maxSlippage,0,0,"Short",MagicNumber,0,Red);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

}

double stopLoss(int ordertype)

Не могли бы вы быть так добры и помочь с кодом для сброса StopLossBars?

Еще раз спасибо.

 

matrixebiz я сделал это, теперь я не могу скомпилировать свою ea, когда я добавил следующие строки в свою ea

double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);

double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);

double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);

double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2);

bool acbuy = ac2==0 && ac11==0; // Красный цвет меняется на лайм

bool acsell = ac1==0 && ac22==0; // Lime меняется на Red

Я получаю 12 ошибок: AC переменная не определена :

и я хотел бы поблагодарить вас за помощь

 

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

Тогда я бы поступил следующим образом.

Пусть переменная пользовательского ввода будет чем-то вроде gStopLossBars, затем в вашей функции init присвойте ее вашей локальной переменной, как...

StopLossBars = gStopLossBars;

Затем просто используйте это же присвоение в функциях покупки и продажи для сброса StopLossBars.

Понятно?

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

Lux

 

Ac+ao+psar

Привет всем,

Кто-нибудь может объединить AC+AO+PSAR в новый индикатор с алертом/почтой? Пожалуйста, напишите мне в PM. Спасибо

 
luxinterior:
Я предполагаю, что StopLossBars - это глобальная переменная, которая устанавливается через пользовательские входы, правильно?

Я бы поступил следующим образом.

Пусть переменная ввода пользователя будет чем-то вроде gStopLossBars, затем в вашей функции init присвойте ее локальной переменной, как...

StopLossBars = gStopLossBars;

Затем просто используйте это же присвоение в функциях покупки и продажи для сброса StopLossBars.

Понятно?

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

Люкс

В этом есть смысл. Большое спасибо.

 

Как я могу определить, когда начинается новая свеча?

пожалуйста, дайте мне совет, как я могу создать советника, который будет выставлять отложенный ордер, когда начинается новый бар (дневной ТФ)?

спасибо

 
:: привет! проверьте код внутри этого индикатора... (только для времени открытия, это не советник).
tcl:
пожалуйста, дайте мне совет, как я могу создать советника, который делает отложенный ордер, когда начинается новый бар (ежедневный TF)? спасибо.
 

Может ли кто-нибудь остановить это от зацикливания?

void BEM ()

{

int pips;

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

{

OrderSelect(k, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (Bid - OrderOpenPrice())/Point;

if ((pips >= BE) && (OrderStopLoss() < OrderOpenPrice())))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()+ 12*Point, OrderTakeProfit (), 0, LightBlue);

}

}

if(OrderType()==OP_SELL && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (OrderOpenPrice() - Ask)/Point;

if ((pips >= BE) && (OrderStopLoss() > OrderOpenPrice())))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()- 12*Point, OrderTakeProfit (), 0, Pink);

}

}

}

}