Problem z MM

O jezykach programowania w platformach i nie tylko.
cesiek
Stały bywalec
Stały bywalec
Posty: 21
Rejestracja: 24 kwie 2012, 14:58

Problem z MM

Nieprzeczytany post autor: cesiek »

Mam problem z MM w moim EA jest, ale nie działa, w czym może być problem dodam, że moja wiedza z informatyki jest poniżej miernego za ewentualną pomoc dziękuje

Kod: Zaznacz cały

input bool use_fixed_lot=false; //Stały lot?
extern double Depo=100; //Od kwoty depozytu...
extern double lot=0.01; //Lot

Kod: Zaznacz cały

double GetLot()
  {
   if(use_fixed_lot==true)
      return NormalizeDouble(lot,2);
   double balance=AccountBalance();
   double minlot=MarketInfo(Symbol(),MODE_MINLOT);
   double maxlot=MarketInfo(Symbol(),MODE_MAXLOT);
   double  Lot=balance*lot/Depo;
   if(Lot<minlot)
      Lot=minlot;
   if(Lot>maxlot)
      Lot=maxlot;
   return NormalizeDouble(Lot,2);
  }
Tutaj jest cały kod mojego EA, jeżeli jest to możliwe żeby można naprawić to bym był bardzo wdzięczny

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                              Stochatic TREND.mq4 |
//+------------------------------------------------------------------+
#property copyright "by IvanVP"
#property version   "1.00"
#property strict

//+------------------------------------------------------------------+
//| Âőîäíűĺ ďŕđŕěĺňđű ńîâĺňíčęŕ                                      |
//+------------------------------------------------------------------+

input string first="Îáůčĺ ďŕđŕěĺňđű ńîâĺňíčęŕ:"; //1)
extern int SL=60;//Ńňîďëîńń â ďóíęňŕő
extern int TP=30;//Ňĺéęďđîôčň â ďóíęňŕő
input bool useCT_close=true;//Čcďîëüçîâŕňü çŕęđűňčĺ ďî ńňđŕňĺăčč?
input bool closeAllOrders=true;//Çŕęđűâŕňü âńĺ îđäĺđŕ?(false - ňîëüęî ďđčáűëüíűĺ)
extern int slippage=3;//Ďđîńęŕëüçűâŕíčĺ
input bool use_fixed_lot=true; //Čńďîëüçîâŕňü ôčęńčđîâŕííűé ëîň?
extern double Depo=1000; //Íŕ ňŕęîé îáúĺě äĺďîçčňŕ...
extern double lot=0.1; //..âîçüěĺň ňŕęîé ëîň
input int MagicNumber=5225;

input string se="Ďŕđŕěĺňđű číäčęŕňîđŕ Moving Average:"; //2)
input int MA_slow_period=55;//Ďĺđčîä SĚŔ íŕ H4


input string th="Ďŕđŕěĺňđű číäčęŕňîđŕ Stochastic:"; //3)
input int K_period=5;//K period
input int D_period=3;//D period
input int slowing=3;//Slowing
input int overbought_low_ST=75;//Íčćíĺĺ çíŕ÷ĺíčĺ çîíű ďĺđĺęóďëĺííîńňč
input int oversold_high_ST=25;//Âĺđőíĺĺ çíŕ÷ĺíčĺ çîíű ďĺđĺęóďëĺííîńňč
input int shiftST=1; //Íŕ ęŕęîě áŕđĺ áđŕňü çíŕ÷ĺíč˙ číäčęŕňîđŕ?

input string four="Ďŕđŕěĺňđű číäčęŕňîđŕ RSIMas:"; //4)

extern int stochastic_Period_K=24;//Ę period äë˙ Stochastic
extern int stochastic_Period_D=3;//D period äë˙ Stochastic
extern int stochastic_Period_Slowing=3;//Slowing äë˙ Stochastic
extern int RSIPeriod=14; //Ďĺđčîä äë˙ RSI
input int overbought_low_RS=80;//Íčćíĺĺ çíŕ÷ĺíčĺ çîíű ďĺđĺęóďëĺííîńňč
input int oversold_high_RS=20;//Âĺđőíĺĺ çíŕ÷ĺíčĺ çîíű ďĺđĺęóďëĺííîńňč 
input int shiftRS=1; //Íŕ ęŕęîě áŕđĺ áđŕňü çíŕ÷ĺíč˙ číäčęŕňîđŕ?

input string five="Ďŕđŕěĺňđű áĺçóáűňęŕ:"; //5)
input bool useBreakeven=false;//Čńďîëüçîâŕňü ÁÓ?
extern int whenStartBreakeven=20;//×ĺđĺç ńęîëüęî ďóíęňîâ ŕęňčâčđîâŕňü ÁÓ?
extern int breakevenHowMutńh=1;//Ńęîëüęî ďóíęňîâ ďđčáűëč çŕôčęńčđîâŕňü?

#define BUY 1
#define SELL 2

bool useFixedTP=true;//Čńďîëüçîâŕňü ôčęńčđîâŕííűé takeprofit?
int stochastic_history=2500;//History


int shiftMA=1; //Íŕ ęŕęîě áŕđĺ áđŕňü çíŕ÷ĺíč˙ číäčęŕňîđŕ?

double tempMA=0;
double tempSt_0=0;
double tempSt_1=0;
double tempRSIM = 0;
double tempMAFH = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   GlobalVariableSet("check",false);

   if(Digits==3 || Digits==5)
     {
      whenStartBreakeven=10*whenStartBreakeven;
      breakevenHowMutńh=10*breakevenHowMutńh;
      TP=10*TP;
      SL= 10*SL;
      slippage=10*slippage;
     }
   NewBar();
   PrintInfo();

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   Breakeven();
   if(NewBar() && GlobalVariableGet("check"))
     {
      if(CheckMA()==SELL && CheckRSIMas()==SELL && CheckStochastic()==SELL && OrderIsOpened(SELL)==false && GlobalVariableGet("signal_sell")==false)
         OpenOrder(SELL);
      if(CheckMA()==BUY && CheckRSIMas()==BUY && CheckStochastic()==BUY &&  OrderIsOpened(BUY)==false && GlobalVariableGet("signal_buy")==false)
         OpenOrder(BUY);
      if(useCT_close)
        {
         if(CheckStochastic()==BUY) //â çîíĺ ďĺđĺďđîäŕííîńňč
            CloseOrder(SELL);
         if(CheckStochastic()==SELL) //â çîíĺ ďĺđĺęóďëĺííîńňč
            CloseOrder(BUY);
        }
      GlobalVariableSet("check",false);
     }

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PrintInfo()
  {
   tempMA=NormalizeDouble(iMA(Symbol(),PERIOD_H4,MA_slow_period,0,0,0,shiftMA),Digits);
   tempSt_0=NormalizeDouble(iStochastic(Symbol(),Period(),K_period,D_period,slowing,0,0,0,shiftST),0);
   tempSt_1=NormalizeDouble(iStochastic(Symbol(),Period(),K_period,D_period,slowing,0,0,1,shiftST),0);
   tempRSIM=NormalizeDouble(iCustom(Symbol(),Period(),"RSIMas",stochastic_history,stochastic_Period_K,stochastic_Period_D,stochastic_Period_Slowing,RSIPeriod,0,shiftRS),0);
 

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetLot()
  {
   if(use_fixed_lot==true)
      return NormalizeDouble(lot,2);
   double balance=AccountBalance();
   double minlot=MarketInfo(Symbol(),MODE_MINLOT);
   double maxlot=MarketInfo(Symbol(),MODE_MAXLOT);
   double  Lot=balance*lot/Depo;
   if(Lot<minlot)
      Lot=minlot;
   if(Lot>maxlot)
      Lot=maxlot;
   return NormalizeDouble(Lot,2);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Breakeven()
  {
   if(useBreakeven)
     {
      if(OrdersTotal()!=0)
         for(int i=OrdersTotal()-1;i>=0;i--)
            if(OrderSelect(i,SELECT_BY_POS)==true)
               if(OrderMagicNumber()==MagicNumber)
                 {
                  if(OrderType()==OP_SELL)//âűáđŕëč îňęđűňűé îđäĺđ
                     if(OrderOpenPrice()-Bid>=whenStartBreakeven*Point) //Ĺńëč öĺíŕ óřëŕ íŕ N ďóíęňîâ âíčç
                       {
                        double sl=NormalizeDouble(OrderOpenPrice()-breakevenHowMutńh*Point,Digits);
                        if(sl!=OrderStopLoss())
                           if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,clrNONE)==false)
                              Fun_Error(GetLastError());
                       }
                  if(OrderType()==OP_BUY)//âűáđŕëč îňęđűňűé îđäĺđ
                     if(Ask-OrderOpenPrice()>=whenStartBreakeven*Point) //Ĺńëč öĺíŕ óřëŕ íŕ N ďóíęňîâ ââĺđő
                       {
                        double sl=NormalizeDouble(OrderOpenPrice()+breakevenHowMutńh*Point,Digits);
                        if(sl!=OrderStopLoss())
                           if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,clrNONE)==false)
                              Fun_Error(GetLastError());
                       }
                 }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool OrderIsOpened(int type)
  {
   int count_open_orders=0;
   if(type==SELL)
      for(int i=OrdersTotal()-1;i>=0;i--)
         if(OrderSelect(i,SELECT_BY_POS)==true)
            if(OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
               return true;
   if(type==BUY)
      for(int i=OrdersTotal()-1;i>=0;i--)
         if(OrderSelect(i,SELECT_BY_POS)==true)
            if(OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
               return true;
   return false;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseOrder(int type)
  {

   for(int i=OrdersTotal()-1;i>=0;i--)
      if(OrderSelect(i,SELECT_BY_POS)==true && OrderMagicNumber()==MagicNumber)
        {
         if(OP_BUY==OrderType() && type==BUY)
           {
            if(closeAllOrders)
              {
               if(OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrNONE)==false)
                  Fun_Error(GetLastError());
              }
            else
              {
               if(OrderProfit()>0)
                  if(OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrNONE)==false)
                     Fun_Error(GetLastError());
              }
           }
         if(OP_SELL==OrderType() && type==SELL)
           {
            if(closeAllOrders)
              {
               if(OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrNONE)==false)
                  Fun_Error(GetLastError());
              }
            else
              {
               if(OrderProfit()>0)
                  if(OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrNONE)==false)
                     Fun_Error(GetLastError());
              }
           }
        }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenOrder(int type)
  {
   if(type==BUY)
     {
      double sl=NormalizeDouble(Ask-SL*Point,Digits);
      double tp=0;
      if(useFixedTP)
         tp=NormalizeDouble(Ask+TP*Point,Digits);
      if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,sl,tp,NULL,MagicNumber,0,clrNONE)==false)
         Fun_Error(GetLastError());
      else GlobalVariableSet("signal_buy",true);
     }
   if(type==SELL)
     {
      double sl=NormalizeDouble(Bid+SL*Point,Digits);
      double tp=0;
      if(useFixedTP)
         tp=NormalizeDouble(Bid-TP*Point,Digits);
      if(OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,sl,tp,NULL,MagicNumber,0,clrNONE)==false)
         Fun_Error(GetLastError());
      else GlobalVariableSet("signal_sell",true);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CheckMA()
  {
   tempMA=NormalizeDouble(iMA(Symbol(),PERIOD_H4,MA_slow_period,0,0,0,shiftMA),Digits);
   if(tempMA<Ask)
     {
      GlobalVariableSet("signal_sell",false);
      return BUY;
     }
   if(tempMA>Bid)
     {
      GlobalVariableSet("signal_buy",false);
      return SELL;
     }
   GlobalVariableSet("signal_sell",false);
   GlobalVariableSet("signal_buy",false);
   return false;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CheckStochastic()
  {
   tempSt_0=NormalizeDouble(iStochastic(Symbol(),Period(),K_period,D_period,slowing,0,0,0,shiftST),0);
   tempSt_1=NormalizeDouble(iStochastic(Symbol(),Period(),K_period,D_period,slowing,0,0,1,shiftST),0);
   if(overbought_low_ST<tempSt_0 && overbought_low_ST<tempSt_1)
     {
      GlobalVariableSet("signal_sell",false);
      return BUY;
     }
        if(tempSt_0<oversold_high_ST && tempSt_1<oversold_high_ST)
     {
      GlobalVariableSet("signal_buy",false);
      return SELL;
     }
   GlobalVariableSet("signal_sell",false);
   GlobalVariableSet("signal_buy",false);
   return false;
  }
//+------------------------------------------------------------------+
//|                                                               |
//+------------------------------------------------------------------+
int CheckRSIMas()
  {
   tempRSIM=NormalizeDouble(iCustom(Symbol(),Period(),"RSIMas",stochastic_history,stochastic_Period_K,stochastic_Period_D,stochastic_Period_Slowing,RSIPeriod,0,shiftRS),0);

   if(overbought_low_RS<tempRSIM)
     {
      GlobalVariableSet("signal_sell",false);
      return BUY;
     }

      if(tempRSIM<oversold_high_RS && tempRSIM!=0)
     {
      GlobalVariableSet("signal_buy",false);
      return SELL;
     }
   GlobalVariableSet("signal_sell",false);
   GlobalVariableSet("signal_buy",false);
   return false;
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool NewBar()
  {
   if((TimeCurrent()-Time[0])<=1)
      return true;
   else
     {
      GlobalVariableSet("check",true);
      return false;
     }
  }
//+------------------------------------------------------------------+
//| Ôóíęöč˙ îáđŕáîňęč îřčáîę                                         |
//+------------------------------------------------------------------+
int Fun_Error(int Error) // Ô-č˙ îáđŕáîň îřčáîę
  {
   switch(Error)
     {                                          // Ďđĺîäîëčěűĺ îřčáęč            
      case  4: Print("Server is busy..");
      if(IsTesting()==false)
         Sleep(3000);                           // Ďđîńňîĺ đĺřĺíčĺ
      return(1);                             // Âűőîä čç ôóíęöčč
      case 135:Print("Price is changed..");
      RefreshRates();                        // Îáíîâčě äŕííűĺ
      return(1);                             // Âűőîä čç ôóíęöčč
      case 136:Print("Waiting for a new tick..");
      while(RefreshRates()==false)           // Äî íîâîăî ňčęŕ
         Sleep(1);                           // Çŕäĺđćęŕ â öčęëĺ
      return(1);                             // Âűőîä čç ôóíęöčč
      case 137:Print("Broker is busy..");
      if(IsTesting()==false)
         Sleep(3000);                           // Ďđîńňîĺ đĺřĺíčĺ
      return(1);                             // Âűőîä čç ôóíęöčč
      case 146:Print("Trading system is busy..");
      if(IsTesting()==false)
         Sleep(500);                            // Ďđîńňîĺ đĺřĺíčĺ
      return(1);                             // Âűőîä čç ôóíęöčč
                                             // Ęđčňč÷ĺńęčĺ îřčáęč
      case  2: Print("Error. Sorry.");
      return(0);                             // Âűőîä čç ôóíęöčč
      case  5: Print("Old version of terminal");
      //Work=false;                            // Áîëüřĺ íĺ đŕáîňŕňü
      return(0);                             // Âűőîä čç ôóíęöčč
      case 64: Print("Account locked");
      // Work=false;                            // Áîëüřĺ íĺ đŕáîňŕňü
      return(0);                             // Âűőîä čç ôóíęöčč
      case 133:Print("Trading desallowed");
      return(0);                             // Âűőîä čç ôóíęöčč
      case 134:Print("Not enough money, sorry.");
      return(0);                             // Âűőîä čç ôóíęöčč
      default: Print("Oops.. error ",Error); // Äđóăčĺ âŕđčŕíňű   
      return(0);                             // Âűőîä čç ôóíęöčč
     }
  }
//+------------------------------------------------------------------+
-- Dodano: sob 30-07-2016, 17:14 --

Problem z MM już rozwiązany za pomoc dziękuje
Po pewnych przeróbkach i wstępnej optymalizacji Robot daje dobre zyski? Oczywiście w testach
Obrazek

-- Dodano: sob 30-07-2016, 17:17 --

Przewidział referendum w Angli?

ODPOWIEDZ