#property version "1.00"
#property strict
extern int PADAMOUNT=3;//pips Beyond candle to stop
extern double RISKPRESENT=0.1;//Risk Present
extern double REWARD_RATIO=2;//Rward_Ratio
extern int CANDELSBACK=3;//How much candles for min\max
extern double Mom_Sell=0.3; //Momentum_Sell
extern double Mom_Buy=0.3; //Momentum_Buy
extern int MAGICNUMBER=1234;
double pips;
double bsl;
double ssl;
double btp;
double stp;
int buyticket;
int selticket;
int BUYSTOPCANDLE;
int SELSTOPCANDLE;
int orderentry;
double Riskedamount;
double Rewadamount;
double LOTSIZE;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
// код доступен только после оплаты
}
int openorderthispair(string pair)//
{
int total=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))Print("eror");
if(OrderSymbol()==pair) total++;//
}
return(total);
}
bool isnewcandle()
{
static int barsonchart=0;
if(Bars==barsonchart)
return(false);
barsonchart=Bars;
return(true);
}
void checkformatrade()
{
if(isnewcandle())
{
double MomLevel=MathAbs(100-iMomentum(NULL,0,14,PRICE_CLOSE,1));
double MomLevel1=MathAbs(100 - iMomentum(NULL,0,14,PRICE_CLOSE,2));
double MomLevel2=MathAbs(100 - iMomentum(NULL,0,14,PRICE_CLOSE,3));
double MA6=iMA(Symbol(),0,6,0,MODE_EMA,PRICE_MEDIAN,2);
double MA14= iMA(Symbol(),0,14,0,MODE_EMA,PRICE_MEDIAN,1);
double MA26= iMA(Symbol(),0,26,0,MODE_EMA,PRICE_MEDIAN,2);
if(MA6<MA14 && MA14<MA26)
if(Low[1]<=MA14)
if(MomLevel>Mom_Buy || MomLevel1>Mom_Buy || MomLevel2>Mom_Buy)
trade(0);
if(MA6>MA14 && MA14>MA26)
if(High[1]>=MA14)
if(MomLevel>Mom_Sell || MomLevel1>Mom_Sell || MomLevel2>Mom_Sell)
trade(1);
}
}
void trade(int type)
{
int total=OrdersTotal();
LOTSIZE=0;
double Equity=AccountEquity();
Riskedamount=Equity*RISKPRESENT*0.01;
BUYSTOPCANDLE=iLowest(NULL,0,1,CANDELSBACK,1);
SELSTOPCANDLE=iHighest(NULL,0,2,CANDELSBACK,1);
double BUY_STOP_PRICE=Low[BUYSTOPCANDLE]-PADAMOUNT*pips;
double PIPS_TO_BSL=Ask-BUY_STOP_PRICE;
double BUY_TAKEPROFIT_PRICE=Ask+PIPS_TO_BSL*REWARD_RATIO;
double SELL_STOP_PRICE=High[SELSTOPCANDLE]+PADAMOUNT*pips;
double PIPS_TO_SSL=SELL_STOP_PRICE-Bid;
double SELL_TAKEPROFIT_PRICE=Bid-PIPS_TO_SSL*REWARD_RATIO;
if(type==0)
{
if(AccountFreeMargin()<(1000*LOTSIZE))
{
Print("We have no money. Free Margin = ",AccountFreeMargin());
return;
}
LOTSIZE=(Riskedamount/(PIPS_TO_BSL/pips))/10;
if( CheckMoneyForTrade(Symbol(), LotsOptimized(LOTSIZE),OP_BUY))
if(openorderthispair(Symbol())==0)buyticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(LOTSIZE),ND(Ask),3,0,0,NULL,MAGICNUMBER,0,Green);
}
if(type==1)
{
if(AccountFreeMargin()<(1000*LOTSIZE))
{
Print("We have no money. Free Margin = ",AccountFreeMargin());
return;
}
LOTSIZE=(Riskedamount/(PIPS_TO_SSL/pips))/10;
if( CheckMoneyForTrade(Symbol(), LotsOptimized(LOTSIZE),OP_SELL))
if(openorderthispair(Symbol())==0) selticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(LOTSIZE),ND(Bid),3,0,0,NULL,MAGICNUMBER,0,Red);
}
for(int cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY)
{
bsl=BUY_STOP_PRICE;
btp=BUY_TAKEPROFIT_PRICE;
LOTSIZE=(Riskedamount/(PIPS_TO_BSL/pips))/10;
RefreshRates();
double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
if(bsl<StopLevel*pips) bsl=StopLevel*pips;
if(btp<StopLevel*pips) btp=StopLevel*pips;
string symbol=OrderSymbol();
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
if(MathAbs(OrderStopLoss()-bsl)>point)
if((pips*PIPS_TO_BSL)>(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL)*pips)
if(CheckStopLoss_Takeprofit(OP_BUY,bsl,btp))
if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),bsl,btp))
if(buyticket>0)if(!OrderModify(OrderTicket(),OrderOpenPrice(),NDTP(bsl),NDTP(btp),0,CLR_NONE))Print("eror");
return;
}
else // go to short position
{
ssl=SELL_STOP_PRICE;
stp=SELL_TAKEPROFIT_PRICE;
LOTSIZE=(Riskedamount/(PIPS_TO_SSL/pips))/10;
RefreshRates();
double StopLevel=MarketInfПоказано первые 50% кода (символов: 7939)
Введите ваш email и нажмите кнопку, чтобы перейти к оплате.