Помощь в кодировании - страница 159

 
mladen:
Не меняйте эту часть кода. Эта часть кода проверяет, является ли ваш брокер 4-х или 5-ти значным брокером. Кроме того, вот тест с начальным депозитом $500 (риск 5%, стоп-лосс 20 пунктов, для теста использовалась пара EURUSD), и он работает даже с таким начальным депозитом.

Здравствуйте, Младен.

Вчера спрашивал Вас о кодировке заказа.

Но она слишком сложная.

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

Вот так:

Баланс счета$500

с риском 5%, открытые лоты = $0.25

лоты=$500*(риск/100)

лоты=$500*(0.05/100)

лоты=$500(0.0005)

лоты= $0.25

Понравилось, что советник автоматически открывает лоты по $0.25.

И количество лотов не смешивается со Stoploss или TProfit.

Надеюсь, вы сможете помочь мне решить эту проблему.

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

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}
 
hock87:
Привет, Младен.

Вчера я спрашивал вас о кодировке заказа.

Но она слишком сложная.

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

Вот так:

Баланс счета $500

с риском 5%, открытые лоты = $0.25

лоты=$500*(риск/100)

лоты=$500*(0.05/100)

лоты=$500(0.0005)

лоты= $0.25

Понравилось, что советник автоматически открывает лоты по $0.25.

И количество лотов не смешивается со Stoploss или TProfit.

Надеюсь, вы сможете помочь мне решить эту проблему.

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

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}

hock87

Не существует простого(r) способа рассчитать размер лота, когда учитываются эквити, стоп-лосс и необходимый риск. Также вы не можете рассчитать риск, не зная стоп-лосс (подумайте об этом: если вы открываете ордер, скажем, размером в 1 лот и закрываете его через 1 пункт или через 100 пунктов, потери (и, соответственно, риск, который был принят) не будут одинаковыми и не могут быть одинаковыми).

Если вы рассчитываете его таким образом (без известного стоп-лосса), то это не расчет риска, а простой расчет размера лота (который не подразумевает никакого расчета риска).

 
mladen:
hock87

Не существует простого (r) способа рассчитать размер лота, когда учитываются эквити, стоп-лосс и необходимый риск. Также вы не можете рассчитать риск, не зная стоп-лосс (подумайте об этом: если вы открываете ордер, скажем, размером 1 лот и закрываете его через 1 пункт или через 100 пунктов, потери (а значит, и риск, который был принят) не будут одинаковыми и не могут быть одинаковыми).

Если вы рассчитываете так (без известного стоп-лосса), то это не расчет риска, а простой расчет размера лота (который не подразумевает никакого расчета риска).

Младен, вы правы.

Я знаю, что это не подразумевает никакого расчета риска.

и просто хочу простой расчет размера лота,

пусть он автоматически рассчитывает размер лота с учетом баланса счета с %.

lots=$500*(risk%/100)

лоты=$500*(0.05/100)

лоты=$500(0.0005)

лоты=$0.25

Понравилось, что советник автоматически открывает лоты по $0.25.

И количество лотов не смешивается со Stoploss или TProfit.

Как его закодировать?

Спасибо.

 
hock87:
Младен, вы правы.

Я знаю, что это не подразумевает никакого расчета риска.

и просто хочу простой расчет размера лота,

пусть он автоматически рассчитывает размер лота с учетом баланса счета в %.

lots=$500*(risk%/100)

лоты=$500*(0.05/100)

лоты=$500(0.0005)

лоты=$0.25

Понравилось, что советник автоматически открывает лоты по $0.25.

И количество лотов не смешивается со Stoploss или TProfit.

Как его закодировать?

Спасибо.

Попробуйте способ, описанный KimIV здесь: b-Lots

 

Спасибо большое mladen, я думаю, это похоже на то, что у меня в голове#1579, кстати, можно ли преобразовать DPO так же, как RSI или MFI уравнения, нормализовать вертикальную шкалу?Detrended Price Oscillator - MQL4 Code Base, еще раз спасибо.

 
kenwa:
Спасибо большое mladen, я думаю, это похоже на то, что у меня в голове#1579, кстати, можно ли преобразовать DPO таким же образом, как RSI или MFI уравнения, нормализовать вертикальную шкалу?Detrended Price Oscillator - MQL4 Code Base, еще раз спасибо.

kenwa

Когда у вас есть шаблон, это не сложно.

Вот rsi для DPO. Верхний - DPO, нижний - RSI DPO.

Файлы:
 

привет mladen, я получил ваш rsi для macd раньше, он сделан аналогичным способом/логикой, как эти недавние версии индекса силы FI и DPO?

Я прикрепил ваши новые версии rsi, сделанные недавно (FI и DPO) на моем компьютере, я столкнулся с проблемой, если я использую функцию icustom, чтобы вызвать их выходные значения, это не от 0 до 100, как показано на графике, а от -100 до 0 до 100, любые комментарии о причинах, это я неправильно вызываю внутреннее значение буфера? спасибо за совет.

Файлы:
 

Здравствуйте, Младен.

У меня проблема,

когда цена открытия ордера на покупку движется в обратном направлении и цена Distance market превышает 25 пунктов,

он автоматически открывает ордер на покупку снова.

Как закодировать эту стратегию?

Спасибо.

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}
 
hock87:
Привет, Младен.

У меня проблема,

когда цена открытия ордера на покупку движется в обратном направлении и цена Distance market превышает 25 пунктов,

он автоматически открывает ордер на покупку снова.

Как закодировать эту стратегию?

Спасибо.

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}

hock87

Этот код не компилируется (замените OP_Buy на OP_BUY) и я не вижу вообще никаких условий для открытия другого ордера. В данный момент вы разрешаете только один ордер (строка "if (TotalOrders<1)") Это должно быть вашей отправной точкой.

 

CCI fdoe hpp

Я скачал этот индикатор из одной из тем, и он намного лучше, чем индикаторы CCI-zones или Ma-zones.

Можно ли его адаптировать для отображения на экране как в индикаторе зон?

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

Это индикатор Forex-TSD, но папки mq4 с ним не было.

Спасибо

TEAMTRADER

Файлы:
cci_fdoehpp.ex4  19 kb
Причина обращения: