İchimoku İndiqatoru və EA - 1-ci Hissə



Keçən dərsimizdən İchimoku indiqatoru haqqında ümumi də olsa məlumatlı oldunuz. Bu dərsimizdə İchimoku xətlərinin əmələ gətirdiyi al-sat siqnallarından yanlız birini əsas götürərək ona əsaslanan sadə bir ticarət robotu yazacağıq.

Bu al-sat siqnalı Tenkansen ilə Kijunsen xətlərinin bir-biri ilə kəsişməsinə əsaslanır.

Əgər qiymət buludun üzərində olarsa və TenkanSen xətti KijunSen xəttini aşağıdan yuxarıya doğru kəsərsə Buy əməliyyatı açacağıq.

Yox əgər qiymət buludun altında olarsa və TenkanSen xətti KijunSen xəttini yuxarıdan aşağıya doğru kəsərsə Sell əməliyyatı açacağıq.

İlk öncə terminalda açılmış olan Buy və Sell əməliyyatlarının sayını bilmək üçün bir funksiya yazırıq.  Əgər heç bir əməliyyat olmaz isə o zaman bazara daxil olacağıq.

//+------------------------------------------------------------------+
BUY
//+------------------------------------------------------------------+
int BuyCount()
{

  int count = 0;
 
  for(int i = OrdersTotal() - 1; i >= 0; i--)
  {
 
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {
         if(Symbol() == OrderSymbol() && MagicNumber == OrderMagicNumber())
         {
            if(OrderType() == OP_BUY)
            {
               count ++;
            }
         }
       
     }
   
  }
   return count;
}
//+------------------------------------------------------------------+
SELL
//+------------------------------------------------------------------+
int SellCount()
{

  int count = 0;
 
  for(int i = OrdersTotal() - 1; i >= 0; i--)
  {
 
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {
         if(Symbol() == OrderSymbol()  &&  MagicNumber == OrderMagicNumber())
         {
            if(OrderType() == OP_SELL)
            {
               count ++;
            }
         }
       
     }
   
  }
   return count;
}
//+------------------------------------------------------------------+

Kodların tamamı aşağıda göstərilmişdir.


//+------------------------------------------------------------------+
//| IchimokuEA.mq4 |
//| AFSHAR |
//| www.algotradingfx.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "AFSHAR"
#property link "www.algotradingfx.blogspot.com"
#property version "1.00"
#property strict
extern double Lots = 1.0;
extern double TakeProfit = 100;
extern double StopLoss = 60;
extern int MagicNumber = 1234;
extern int Slippage = 3;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(Digits == 3 || Digits == 5)
{
TakeProfit *= 10;
StopLoss *= 10;
Slippage *= 10;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double tenkansenCurrent = iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);
double tenkansenPrev = iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,2);
double kijunsen = iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1);
double senkouspana = iIchimoku(NULL,0,9,26,52,MODE_SENKOUSPANA,1);
double senkouspanb = iIchimoku(NULL,0,9,26,52,MODE_SENKOUSPANB,1);
if(CountTrades() == 0 )
{
if(tenkansenCurrent > tenkansenPrev && tenkansenCurrent > kijunsen && senkouspana > senkouspanb && Bid > senkouspana )
{
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask - (StopLoss*Point),Ask + ( TakeProfit*Point),NULL,MagicNumber,0,clrNONE))
{
Print("Buy Order Opened ");
}
}
if(tenkansenCurrent < tenkansenPrev && tenkansenCurrent < kijunsen && senkouspana < senkouspanb && Ask < senkouspana)
{
if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid + (StopLoss*Point),Bid - ( TakeProfit*Point),NULL,MagicNumber,0,clrNONE))
{
Print("Sell Order Opened ");
}
}
}
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count = 0;
for(int i = OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
count++;
}
}
}
}
return(count);
}
view raw ichimoku2.mq4 hosted with ❤ by GitHub


Yorumlar

Bu blogdaki popüler yayınlar

İchimoku İndiqatoru və EA - Giriş

Forex Dərsləri 5 : Dəyişənlər

Forex Dərsləri 9 : İlk İndiqatorumuz - 1-ci Hissə