İ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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//+------------------------------------------------------------------+ | |
//| 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); | |
} |
Yorumlar
Yorum Gönder