Exp_ZeroFillingStop

Author: Copyright © 2015, Nikolay Kositsin
Price Data Components
0 Views
0 Downloads
0 Favorites
Exp_ZeroFillingStop
ÿþ//+------------------------------------------------------------------+

//|                                          Exp_ZeroFillingStop.mq5 |

//|                               Copyright © 2016, Nikolay Kositsin | 

//|                              Khabarovsk,   farria@mail.redcom.ru | 

//+------------------------------------------------------------------+

#property copyright "Copyright © 2015, Nikolay Kositsin"

#property link      "farria@mail.redcom.ru"

#property version   "1.00"

#property description   "-:A?5@B ?5@52>48B ?>78F8N 2 157C1KB>:, B> 5ABL AB028B AB>?;>AA =0 C@>2=5 F5=K >B:@K20=8O ?>78F88,"

#property description   "?@8 4>AB865=88 F5=>9 D8=0=A>2>3> 0:B820 :>;8G5AB20 ?C=:B>2 ?@81K;8, :>B>@>5 >?@545;O5BAO 2E>4=K<8 ?0@0<5B@0<8 M:A?5@B0"

//+----------------------------------------------+

//  ">@3>2K5 0;3>@8B<K                           | 

//+----------------------------------------------+

#include <TradeAlgorithms.mqh>

//+----------------------------------------------+

//| E>4=K5 ?0@0<5B@K M:A?5@B0                   |

//+----------------------------------------------+

input uint   ZeroFillingStop=500;     //?@>D8B ?>78F88 2 ?C=:B0E

input uint    Deviation_=10;          //<0:A. >B:;>=5=85 F5=K 2 ?C=:B0E

//+----------------------------------------------+

//---- >1JO2;5=85 F5;KE ?5@5<5==KE =0G0;0 >BAG5B0 40==KE

int min_rates_total;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

//---- =8F80;870F8O ?5@5<5==KE =0G0;0 >BAGQB0 40==KE

   min_rates_total=2;

//----

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//----

   GlobalVariableDel_(Symbol());

//----

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

//---- ?@>25@:0 :>;8G5AB20 10@>2 =0 4>AB0B>G=>ABL 4;O @0AGQB0

   if(Bars(Symbol(),PERIOD_CURRENT)<min_rates_total) return;



//---- 1JO2;5=85 ;>:0;L=KE ?5@5<5==KE

   double ;

//---- 1JO2;5=85 8 >1=C;5=85 ?5@5<5==KE A83=0;>2 B@59;8=AB>?>2   

   bool BUY_tral=false;

   bool SELL_tral=false;

   double NewStop=0.0;

//---- =8F80;870F8O A83=0;>2 B@59;8=AB>?>2 8 ?5@52>40 ?>78F88 2 157C1KB>:

   if(PositionSelect(Symbol())) //@>25@:0 =0 =0 =0;8G85 >B:@KB>9 ?>78F88

     {

      ENUM_POSITION_TYPE PosType=ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));



      if(PosType==POSITION_TYPE_SELL)

        {

         double LastStop=PositionGetDouble(POSITION_SL);

         double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);

         double point=SymbolInfoDouble(Symbol(),SYMBOL_POINT);

         if(!Bid || !point) return; //=5B 40==KE 4;O 40;L=59H53> @0AGQB0

         double OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN);

         int point_profit=int((OpenPrice-Bid)/point);



         //---- >;CG8< A83=0;K ?5@5=>A0 AB>?;>AA0 H>@B0 2 157C1KB>:

         if(LastStop>OpenPrice && point_profit>int(ZeroFillingStop))

           {

            NewStop=OpenPrice;

            SELL_tral=true;

           }

        }



      if(PosType==POSITION_TYPE_BUY)

        {

         double LastStop=PositionGetDouble(POSITION_SL);

         double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);

         double point=SymbolInfoDouble(Symbol(),SYMBOL_POINT);

         if(!Ask || !point) return;  //=5B 40==KE 4;O 40;L=59H53> @0AGQB0

         double OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN);

         int point_profit=int((Ask-OpenPrice)/point);



         //---- >;CG8< A83=0;K ?5@5=>A0 AB>?;>AA0 ;>=30 2 157C1KB>:

         if(LastStop<OpenPrice && point_profit>int(ZeroFillingStop))

           {

            NewStop=OpenPrice;

            BUY_tral=true;

           }

        }

     }

//+----------------------------------------------+

//| !>25@H5=85 A45;>:                            |

//+----------------------------------------------+

//---- >48D8F8@C5< ;>=3

   dBuyPositionModify(BUY_tral,Symbol(),Deviation_,NewStop,0.0);



//---- >48D8F8@C5<  H>@B

   dSellPositionModify(SELL_tral,Symbol(),Deviation_,NewStop,0.0);

//----

  }

//+------------------------------------------------------------------+

Comments