//+------------------------------------------------------------------+//| Enum Lor or Risk |//+------------------------------------------------------------------+enum ENUM_LOT_OR_RISK
{
lots=0, // Constant lot
risk=1, // Risk in percent
};
//+------------------------------------------------------------------+
inputdouble MaximumRisk = 0.01; // Maximum Risk in percentageinputdouble DecreaseFactor = 3; // Descrease factorinput ENUM_LOT_OR_RISK InpLotOrRisk = lots; // Money management: Lot OR Risk
//+------------------------------------------------------------------+//| Calculate optimal lot size |//+------------------------------------------------------------------+double TradeSizeOptimized(void)
{
double price=0.0;
double margin=0.0;
//--- select lot sizeif(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price))
return(0.0);
if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin))
return(0.0);
if(margin<=0.0)
return(0.0);
double lot=0;
//---switch(InpLotOrRisk)
{
case lots:
lot=MaximumRisk;
break;
case risk:
lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
default:
break;
}
//--- calculate number of losses orders without a breakif(DecreaseFactor>0)
{
//--- select history for accessHistorySelect(0,TimeCurrent());
//---int orders=HistoryDealsTotal(); // total history dealsint losses=0; // number of losses orders without a breakfor(int i=orders-1; i>=0; i--)
{
ulong ticket=HistoryDealGetTicket(i);
if(ticket==0)
{
Print("HistoryDealGetTicket failed, no trade history");
break;
}
//--- check symbolif(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
continue;
//--- check Expert Magic numberif(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=Magic_Number)
continue;
//--- check profitdouble profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
if(profit>0.0)
break;
if(profit<0.0)
losses++;
}
//---if(losses>1)
lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//--- normalize and check limitsdouble stepvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
lot=stepvol*NormalizeDouble(lot/stepvol,0);
double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
if(lot<minvol)
lot=minvol;
double maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
if(lot>maxvol)
lot=maxvol;
//--- return trading volumereturn(lot);
}
//+------------------------------------------------------------------+
где лот - вставляем TradeSizeOptimized()
надо поправить в Эксперте - а то там, не правильно
1 возможность : линия 1 откроет линию 4на заданном расстоянии, линия 2 откроет линию 3 на заданном расстоянии .
2 возможность: линия 7 откроет линию 10 на заданном расстоянии, которая движется за ценой и как цена коснётся , сработает команда . линия 8 откроет линию 9 на заданном расстоянии,- те же, действия как у 7 и 10
#property version "1.01"
Оказалась ещё возможность - линия 1 откроет 4 и 9. линия 2 откроет 3 и 10.
разобрался как, правильно прописать риск
где лот - вставляем TradeSizeOptimized()
надо поправить в Эксперте - а то там, не правильно
переименовал - эксперт завершён. все ошибки исправлены. Название < Ход конём ><Horse move>
Добавил к предыдущему Эксперту , два способа для Горизонтальной линии.
1 возможность : линия 1 откроет линию 4на заданном расстоянии, линия 2 откроет линию 3 на заданном расстоянии .
2 возможность: линия 7 откроет линию 10 на заданном расстоянии, которая движется за ценой и как цена коснётся , сработает команда . линия 8 откроет линию 9 на заданном расстоянии,- те же, действия как у 7 и 10
#property version "1.01"
Оказалась ещё возможность - линия 1 откроет 4 и 9. линия 2 откроет 3 и 10.
линия 7 откроет 10 и 3 . линия 8 откроет 9 и 4
чтобы позиции открывались на оборот и не трогать настройки Obj: command:
есть реверс -
#property version "1.01"
Оказалась ещё возможность - линия 1 откроет 4 и 9. линия 2 откроет 3 и 10.
линия 7 откроет 10 и 3 . линия 8 откроет 9 и 4
чтобы позиции открывались на оборот и не трогать настройки Obj: command:
есть реверс -
сейчас запустил тест - до конца месяца трогать не буду, интересно что получится. - лот, установил под риск -сам он как то рассчитывает
не чё так! потихоньку - но прибавляет
да! он прямо прёт
переименовал - эксперт завершён. все ошибки исправлены. Название < Ход конём ><Horse move>
Интересный советник.
установил в настройках input double TargetProfit = 30000.00; // Целевая прибыль
наверное мало - надо было больше. теперь по новой надо ждать, точки входа и установил цель TargetProfit = 35000.00; // Целевая прибыль
открывает позиции от индикатора pivot lines timezone.mq5 от линии R2 -вниз S2-вверх
индикатор можно не удалять - его линии обновляются наследующий день
индикатор ниже - сейчас поищу на сайте ссылку на индикатор https://www.mql5.com/ru/code/1114
установил в настройках input double TargetProfit = 30000.00; // Целевая прибыль
наверное мало - надо было больше. теперь по новой надо ждать, точки входа и установил цель TargetProfit = 35000.00; // Целевая прибыль
открывает позиции от индикатора pivot lines timezone.mq5 от линии R2 -вниз S2-вверх
индикатор можно не удалять - его линии обновляются наследующий день
индикатор ниже - сейчас поищу на сайте ссылку на индикатор https://www.mql5.com/ru/code/1114
это - один из вариантов. но вариантов миллион
забыл сказать про лот - установил на риск input ENUM_LOT_OR_RISK InpLotOrRisk = lots; // Money management: Lot OR Risk
(информация эксперта в .log) какие выдаёт предупреждения https://www.mql5.com/ru/docs/event_handlers/ondeinit#property version "1.02"
нашёл ещё один способ для кнопок
здесь выбираем
при открытии позиции - сразу выставляется стоп лосс (жёлтая Горизонтальная линия)
настраивается здесь -input double InpStopLoss = 55; // Obj: Stop Loss, in pips (1.00045-1.00055=1 pips)
отключить ставим 0