İchimoku İndiqatoru və EA - Trailing Stop
Dərslər irəlilədikcə halhazırda yazmış olduğumuz İchimoku Ticarət Robotumuza yeni xüsusiyyətlər əlavə edərək təkmilləşdirəcəyik. Bu günki dərsimizdə Expert Məsləhətçimizə Trailing Stopu əlavə edəcəyik.
Trailing Stop Nədir?
Trailing Stop - Təqib edən Zərər durdurucu əmrdir. Misal,
1 lot EUR/USD cütlüyündə 1.24943 qiymətindən alış əməliyyatı etdik. Bu əməliyyat üçün təqib edən zərər durdurucu əmir girdiyimizdə, əməliyyatımız minimum misal üçün 15 pip qazanc olduğunda zərər durdurucu əmir ekranda passiv olarak SL kolonunda görüləcəktir ve əməliyyatdakı qazancımız artdıqca SL kolonunda gördüyümüz Trailing Stop əmrinin qiymətidə avtomatik olarak artacakdır .
Misal üçün : EUR/USD 1,24943 olduğu təqdirdə zərər durdururcu əmir misal üçün 15 pip olarak seçsək:
Cütlük 1,24958 olduğunda, əmirimiz ekranda görüləcək (1,24943). Cütlük 2 pip yuxarı doğru hərəkət etdiyində 1,24960 olduğunda bizim zərər durdurucu əmrimiz də 2 pip artmış (1,24945) olacaktır.
Əgər cütlük 15 pip aşağı gələrsə , 1,24945 olduğunda əməliyyat avtomatik olaraq bağlanacaqdır.
Əməliyyatımız zərərdə isə bu əmir ekranda görülməyəcəkdir.. Ekranda bu tip bir əmrin görüləbilməsi üçün, əməliyyatın mütləq qazanclı olması lazımdır. Əmrin sistemə girişi mərhələsində Trailing Stop əmri girilə bilməz.
İlk öncə MoveTrailingStop adlı bir funksiya yazırıq. Bu funksiya daxilində Sizin hələ bilmədiyiniz MQL4 dilinə aid iki funksiya ilə rastlaşcağsınız. Bunlardan biri OrderSelect() o biri isə OrderModify() funksiyalarıdır. Bu funksiyaların mahiyyəti ilə növbəti dərslərimizdə tanış olacağıq.Kodlar
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 int MagicNumber = 1234; | |
extern int Slippage = 3; | |
extern int TrailingStop=0; | |
extern int TrailingStep=0; | |
//+------------------------------------------------------------------+ | |
//| Expert initialization function | | |
//+------------------------------------------------------------------+ | |
int OnInit() | |
{ | |
if(Digits == 3 || Digits == 5) | |
{ | |
TakeProfit *= 10; | |
Slippage *= 10; | |
TrailingStep *=10; | |
TrailingStop *=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(TrailingStop > 0) | |
{ | |
MoveTrailingStop(); | |
} | |
if(CountTrades() == 0 ) | |
{ | |
if(tenkansenCurrent > tenkansenPrev && tenkansenCurrent > kijunsen && senkouspana > senkouspanb && Bid > senkouspana ) | |
{ | |
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,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,0,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); | |
} | |
//-----------------------------------------------------+ | |
//+------------------------------------------------------------------+ | |
bool isNewCandle() | |
{ | |
static datetime candletime=0; | |
if(candletime==Time[0]) | |
{ | |
return false; | |
} | |
else | |
{ | |
candletime=Time[0]; | |
} | |
return true; | |
} | |
//+------------------------------------------------------------------+ | |
//+------------------------------------------------------------------+ | |
void MoveTrailingStop() | |
{ | |
int cnt,total=OrdersTotal(); | |
for(cnt=0;cnt<total;cnt++) | |
{ | |
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) | |
if(OrderType()<= OP_SELL && OrderSymbol() == Symbol()) | |
{ | |
if(OrderType()==OP_BUY) | |
{ | |
if(TrailingStop>0) | |
{ | |
if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-Point*(TrailingStop+TrailingStep),Digits))||(OrderStopLoss()==0)) | |
{ | |
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Green)) | |
return; | |
} | |
} | |
} | |
else | |
{ | |
if(TrailingStop>0) | |
{ | |
if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+Point*(TrailingStop+TrailingStep),Digits)))||(OrderStopLoss()==0)) | |
{ | |
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStop,Digits),OrderTakeProfit(),0,Red)) | |
return; | |
} | |
} | |
} | |
} | |
} | |
} | |
//----------------------------------------------------------------- |
Yorumlar
Yorum Gönder