제품을 구매하거나 렌트한 사용자만 코멘트를 남길 수 있습니다
Maxim Kuznetsov  

Простой советник для тестов индикатора Prima и как основа для ваших советников

#property copyright "Maxim Kuznetsov"
#property link      "https://www.luxtrade.tk"
#property version   "1.00"
//--- input parameters
input ENUM_TIMEFRAMES TF=PERIOD_CURRENT;
input int      PERIOD1=5;
input int      PERIOD2=34;
input int      DISTANCE1=10;
input int      DISTANCE2=50;
input double   LOTS=1.0;
input int      MAGIC=2234;

#include <Trade/Trade.mqh>

int PRIMA;

CTrade *trade;
int OnInit()
{
   PRIMA=iCustom(_Symbol,TF,"Market\\prima.ex5",
      PERIOD1,PERIOD2,
      DISTANCE1,DISTANCE2,
      false,false,false,
      false,false,false);
   if (PRIMA==INVALID_HANDLE) {
      PRIMA=iCustom(_Symbol,TF,"nektomk\\prima.ex5",
      PERIOD1,PERIOD2,
      DISTANCE1,DISTANCE2,
      true,true,true,
      false,false,false);
      if (PRIMA==INVALID_HANDLE) return INIT_FAILED;
   }   
   
   trade = new CTrade;
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   delete trade;
}
datetime now;
datetime time0=0;
void OnTick()
{
   MqlRates rate[3];
   now=TimeCurrent();
   CopyRates(_Symbol,TF,0,3,rate);
   if (time0==0) {
      time0=rate[0].time;
      //continue;
   } else if (time0!=rate[0].time) {
      time0=rate[0].time;
      OnBar(TF);
   }
}

void
OnBar(ENUM_TIMEFRAMES tf) 
{
   double sigBuy[1],sigSell[1];
   CopyBuffer(PRIMA,6,0,1,sigBuy);
   CopyBuffer(PRIMA,7,0,1,sigSell);
   if (sigBuy[0]!=EMPTY_VALUE && sigBuy[0]!=0) OnSignal(POSITION_TYPE_BUY,sigBuy[0]);
   if (sigSell[0]!=EMPTY_VALUE && sigSell[0]!=0) OnSignal(POSITION_TYPE_SELL,sigSell[0]);   
}
void
OnSignal(ENUM_POSITION_TYPE type,double price) 
{
   if (type==POSITION_TYPE_BUY) {
      ClosePosition(POSITION_TYPE_SELL);
      trade.Buy(LOTS,_Symbol,0,0,0,"");
   } else if (type==POSITION_TYPE_SELL) {
      ClosePosition(POSITION_TYPE_BUY);
      trade.Sell(LOTS,_Symbol,0,0,0,"");
   } 
}
void ClosePosition(ENUM_POSITION_TYPE type)
{
   CPositionInfo pos;
   pos.SelectByMagic(_Symbol,MAGIC);
   if (pos.Type()==type && pos.Volume()>0) trade.PositionClose(_Symbol);
}


파일:
PrimaEA.mq5  3 kb
PrimaEA.ex5  58 kb