RoNz Rapid-Fire EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ronz_rapid-fire_strategy.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Закрытие позиций возможно по двум сценариям: по стоп-лоссу или по сигналу окончания тренда. Советник использует единый магический номер для идентификации своих ордеров и работает только с текущим символом на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots (inpLots) | Размер лота — Базовый размер лота для открытия позиции |
| Lots Type (inpLotsMode) | Режим расчёта лота — Способ определения размера лота: фиксированный, на основе риска, уменьшение или увеличение при убытках |
| inpMaximumLotRisk | Максимальный риск лота — Процент свободного маржи, используемый для расчёта лота в режиме риска |
| DecreaseFactor | Фактор изменения лота — Множитель для корректировки размера лота при серии убыточных сделок |
| StopLoss | Стоп-лосс — Расстояние стоп-лосса в пунктах от цены открытия |
| TakeProfit | Тейк-профит — Расстояние тейк-профита в пунктах от цены открытия |
| TrailingStop | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах для фиксации прибыли |
| Use Averaging (Averaging) | Усреднение — Включает или отключает открытие дополнительных позиций в направлении тренда |
| MAPeriod | Период MA — Период скользящей средней, используемой для определения тренда |
| PSARStep | Шаг PSAR — Шаг параболического SAR |
| PSARMax | Максимум PSAR — Максимальное значение параболического SAR |
| Close Type (CloseType) | Тип закрытия — Условие закрытия позиции: по стоп-лоссу или по развороту тренда |
| AppliedPrice | Применяемая цена — Тип цены, используемой для расчёта скользящей средней |
| Method | Метод MA — Метод построения скользящей средней (например, SMA, EMA) |
Поиск по коду файла
#property version "1.01"
#property strict
#define MAGICMA 19841129
enum ENUM_LOTTYPE
{
LOTS_FIXED=0,//Fixed Lots
LOTS_MAXRISK=1,//Risk Based Lots
LOTS_DECREASE=2, //Decrease Lots When Loss
LOTS_INCREASE=3, //Increase Lots When Loss
};
enum ENUM_CLOSETYPE
{
SL_Close=0,TrendClose=1
};
input double inpLots=0.01;//Lots
extern ENUM_LOTTYPE inpLotsMode=LOTS_MAXRISK;//Lots Type
input double inpMaximumLotRisk =0.02;
input double DecreaseFactor=1;
input int StopLoss=150;
input int TakeProfit=100;
input int TrailingStop=0;
input bool Averaging=false; //Use Averaging
input int MAPeriod=60;
input double PSARStep=0.02;
input double PSARMax=0.2;
input ENUM_CLOSETYPE CloseType=SL_Close; //Close Type
sinput ENUM_APPLIED_PRICE AppliedPrice=PRICE_CLOSE;
sinput ENUM_MA_METHOD Method=MODE_SMA;
double InitialBalance=0;
string LotType="";
int PipRisk=1000;
int inpLotsFactor=1;
int CalculateCurrentOrders()
{
int TotalOrder=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
TotalOrder++;
}
}
return TotalOrder;
}
double OptimalLots()
{
double LotStep=MarketInfo(NULL,MODE_LOTSTEP);//Lot Step
double MinLots=MarketInfo(NULL,MODE_MINLOT);//Minimum Lots
double MaxLots=MarketInfo(NULL,MODE_MAXLOT);//Maximal Lots
double lot=inpLots;
int losses=0;
if(LotStep!=0)
lot=MathFloor(lot/LotStep)*MathMod(LotStep,lot);
if(lot<MinLots) lot=MinLots;
if(inpLotsMode==LOTS_FIXED)
{
LotType="Fixed";
return lot;
}
lot=NormalizeDouble((AccountFreeMargin()*(inpMaximumLotRisk/100))/PipRisk,2);
lot=MathFloor(lot/LotStep)*MathMod(LotStep,lot);
if(lot<MinLots) lot=MinLots;
if(inpLotsMode==LOTS_MAXRISK)
{
LotType="Risk-Based";
return lot;
}
if(inpLotsFactor>0)
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Error in history!");
break;
}
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGICMA || OrderType()>OP_SELL) continue;
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(inpLotsMode==LOTS_DECREASE)
{
LotType="Dec. Loss";
if(losses>1)
lot=NormalizeDouble(lot-(lot*losses/inpLotsFactor),2);
}
if(inpLotsMode==LOTS_INCREASE)
{
LotType="Inc. Loss";
if(losses>1)
lot=NormalizeDouble(lot+(lot*losses/inpLotsFactor),2);
}
}
lot=MathFloor(lot/LotStep)*MathMod(LotStep,lot);
if(lot<MinLots) lot=MinLots;
return(lot);
}
int AnalisaTrend(string mode,int opType)
{
int val=0;
string msg;
double iMa=iMA(NULL,0,MAPeriod,0,Method,AppliedPrice,0);
double pSAR=iSAR(NULL,0,PSARStep,PSARMax,1);
double SAR=iSAR(NULL,0,PSARStep,PSARMax,0);
bool iRZI_Buy=(Close[0]>iMa) && SAR<Close[0] && pSAR>Close[0];
bool iRZI_Sell=(Close[0]<iMa) && SAR>Close[0] && pSAR<Close[0];
bool Uptrend=iRZI_Buy;
bool Downtrend=iRZI_Sell;
bool EndofUptrend,EndofDowntrend;
if(CloseType==TrendClose)
{
EndofUptrend=iRZI_Sell;
EndofDowntrend=iRZI_Buy;
}
else if(CloseType==SL_Close)
{
EndofUptrend=false;
EndofDowntrend=false;
}
msg=StringConcatenate(
" Bid/Ask [",NormalizeDouble(Bid,Digits()),"/",NormalizeDouble(Ask,Digits()),"]",
" RZIBuySell [",iRZI_Buy,"|",iRZI_Sell,"]",
" Bal/Equ [",AccountBalance(),"/",AccountEquity(),"]",
"");
if(opType==-1)
{
if(Uptrend)
{
Print(mode,": Uptrend dimulai! ",msg);
val=3;
}
else if(Downtrend)
{
Print(mode,": Downtrend dimulai! ",msg);
val=-3;
}
}
else if(opType==OP_BUY)
{
if(Uptrend)
{
Print(mode,": Uptrend berlanjut! ",msg);
val=2;
}
if(EndofUptrend)
{
Print(mode,": Uptrend berakhir! ",msg);
val=1;
}
}
else if(opType==OP_SELL)
{
if(Downtrend)
{
Print(mode,": Downtrend berlanjut! ",msg);
val=-2;
}
if(EndofDowntrend)
{
Print(mode,": Downtrend berakhir! ",msg);
val=-1;
}
}
if(val==0)
{
}
return val;
}
string SymbolIПоказано первые 50% кода (символов: 7022)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.