Es gibt eine interessante Handelsidee. Helfen Sie mir, Fehler im Code zu finden (mql4). - Seite 16

 
Sergey Gritsay:
Behebung von Fehlern in der MT5-Version

Danke für das Update... mt5 hat diese Woche einen guten Job gemacht... Wenn Sie von 1000 mehr als 10% zählen... Hier ist ein Bild... hatte heute mehr als 100... Ich werde dieses Update jetzt beobachten, ich dachte auch daran, mt4 mit cmilliona grid6https://www.mql5.com/ru/code/12971 zu kombinieren, um zu sehen, wie es zusammen funktionieren wird...))

Chart CHFJPY, H1, 2016.03.18 12:21 UTC, MetaQuotes Software Corp.

Мультивалютный сеточник GRID 6 SYMBOLS
Мультивалютный сеточник GRID 6 SYMBOLS
  • Stimmen: 19
  • 2015.05.11
  • Vladimir Khlystov
  • www.mql5.com
Советник выставляет сети стоп-ордеров по нескольким инструментам, далее закрывает все при достижении указанной прибыли.
 
Die neueste Version - arbeitet klar - Sie können Pips - wenn die Schließung Hände in die gleiche Richtung öffnet, sollten Sie eine Art von Verzögerung haben ... Begonnen, ein bisschen mehr als Null zu schleppen... 2-4 Pips, wenn es gerade zurückgeht... Pflicht zum Nachdenken - Pfeile stehen schon lange, aber keine Position... Außerdem hat sie im Vergleich zu ihren Vorgängern mehr Signale ausgesendet - nun, das ist nur eine grobe Schätzung... Nun, es ist immer noch die beste Option ... Vielen Dank noch einmal ... etwas anderes ist still - aou-au wer sonst etwas gefunden hat ... Oder wollen Sie es nicht verhexen ...))
 
Сергей Криушин:
Die neueste Version - arbeitet klar - Sie können Pips - wenn die Schließung Hände in die gleiche Richtung öffnet, sollten Sie eine Art von Verzögerung haben ... Begonnen, ein bisschen mehr als Null zu schleppen... 2-4 Pips, wenn es gerade zurückgeht... Pflicht zum Nachdenken - Pfeile stehen schon lange, aber keine Position... Außerdem hat sie im Vergleich zu ihren Vorgängern mehr Signale ausgesendet - nun, das ist nur eine grobe Schätzung... Nun, es ist immer noch die beste Option ... Vielen Dank noch einmal ... etwas anderes ist still - aou-au wer sonst etwas gefunden hat ... oder ich will es nicht verhexen...))
Wenn Sie viele Zeichen haben, wird es langsamer, bis alle Zeichen berechnet sind. Der Grundgedanke ist, dass es nicht geöffnet werden sollte, bis ein neuer Balken erschienen ist, d.h. es sollte eine Transaktion auf einem Balken durchgeführt werden.
 

Ich habe die Signale dieser Strategie zusammen mit meinem Martin Advisor geklebt, das ist das Ergebnis von Januar 2015 bis heute

EURUSD:

USDCHF:

 
Sergey Gritsay:

Ich habe die Signale dieser Strategie zusammen mit meinem Martin Advisor geklebt, das ist das Ergebnis von Januar 2015 bis heute

EURUSD:

USDCHF:

Mt5 hat auch einen netten Martin vonhttps://www.mql5.com/ru/code/13315 - multipliziert den letzten Verlusthandel... aber es gibt oft 2 dieser Verlustgeschäfte...
//+------------------------------------------------------------------+
//| Виртуальный стоп                                                 |
//+------------------------------------------------------------------+
void PutLable(const string name="",datetime time=0,double price=0,const color clr=clrGreen)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- Создаем метку
   if(!ObjectCreate(0,name,OBJ_ARROW_LEFT_PRICE,0,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать левую ценовую метку! Код ошибки = ",GetLastError());
      return;
      //--- установим цвет метки
      ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
      //--- установим стиль окаймляющей линии
      ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
      //--- установим размер метки
      ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool isNewBar(string symbol,ENUM_TIMEFRAMES timeframe)
  {
//---- получим время появления текущего бара
   datetime TNew=datetime(SeriesInfoInteger(symbol,timeframe,SERIES_LASTBAR_DATE));
   datetime m_TOld=0;
//--- проверка на появление нового бара
   if(TNew!=m_TOld && TNew)
     {
      m_TOld=TNew;
      //--- появился новый бар!
      return(true);
      Print("Новый бар!");
     }
//--- новых баров пока нет!
   return(false);
  }
//+------------------------------------------------------------------+
//| Возвращает true, если появился новый бар для пары символ/период  |
//+------------------------------------------------------------------+
bool IsNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

//--- если это первый вызов функции
   if(last_time==0)
     {
      //--- установим время и выйдем 
      last_time=lastbar_time;
      return(false);
     }

//--- если время отличается
   if(last_time!=lastbar_time)
     {
      //--- запомним время и вернем true
      last_time=lastbar_time;
      return(true);
     }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }  
//+------------------------------------------------------------------+
//| Считаем лот в зависимости от полученного профита                 |
//+------------------------------------------------------------------+
double Volume(void)
  {
   double lot=Lots;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      lot=Lots;
     }
//--- Профит сделки
   double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
//--- Лот сделки
   double lastlot=HistoryDealGetDouble(ticket,DEAL_VOLUME);
//--- Профит отрицательный
   if(profit<0.0)
     {
      //--- Увеличиваем следующий лот
      lot=lastlot*KLot;
      Print(" Cделка закрыта по стопу! ");
     }
//--- Приводим лот к минимальному
   double maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   if(lot<maxvol)
      lot=maxvol;
//--- Если лот больше максимального то начальный лот
   if(lot>MaxLot)
      lot=Lots;
//--- Возвращаем торговый объем
   return(lot);
  }
//+------------------------------------------------------------------+
//| Смотрим тип последней закрытой сделки                            |
//+------------------------------------------------------------------+
int LastDealType(void)
  {
   int type=0;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
//--- Нет сделок в истории
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      type=0;
     }
   if(ticket>0)
     {
      //--- Последняя сделка BUY 
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY)
        {
         type=2;
        }
      //--- Последняя сделка SELL
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL)
        {
         type=1;
        }
     }
//---
   return(type);
  }
Well Martin
Well Martin
  • Stimmen: 19
  • 2015.06.25
  • Andrew Kornishkin
  • www.mql5.com
Советник Well Martin на основе двух индикаторов: Bollinger Bands и ADX.
 
Versucht, für RSI-Indikator übersetzen - hat nicht funktioniert... wahrscheinlich nicht mit der Bibliothek...
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE Get_Signal(string symbol,int index)
  {
   double rsi_s[3];
   double rsi_f[3];
   double thv[1];
   ArrayInitialize(rsi_s,0);
   ArrayInitialize(rsi_f,0);
   ArrayInitialize(thv,0);

   if(Bars(symbol,TF_ATR)<Period_ATR+1)return(WRONG_VALUE);
   if(Bars(symbol,PERIOD_CURRENT)<period_RSI_F+1)return(WRONG_VALUE);

   if(IndicatorTrend==RSI)
     {
      if(Bars(symbol,PERIOD_CURRENT)<period_RSI_S+1)return(WRONG_VALUE);
      if(m_rsi_s[index]==INVALID_HANDLE || m_rsi_s[index]==0){m_rsi_s[index]=iRSI(symbol,PERIOD_CURRENT,period_RSI_S,PRICE_CLOSE);return(WRONG_VALUE);}
      int i=0;
      do
        {
         if(i>Bars(symbol,PERIOD_CURRENT))break;

         if(rsi_s[1]>100.0)trend[index]=ORDER_TYPE_BUY;
         if(rsi_s[1]<-100.0)trend[index]=ORDER_TYPE_SELL;
         if(rsi_s[1]>100.0  &&  rsi_s[0]<100.0)trend[index]=ORDER_TYPE_BUY;
         if(rsi_s[1]<-100.0 && rsi_s[0]>-100.0)trend[index]=ORDER_TYPE_SELL;
         i++;
        }
      while(trend[index]==WRONG_VALUE && !IsStopped());
     }
   if(IndicatorTrend==THV4)
     {
      if(m_thv[index]==INVALID_HANDLE || m_thv[index]==0){m_thv[index]=iCustom(symbol,PERIOD_CURRENT,"::Indicators\\THV4");return(WRONG_VALUE);}
      if(CopyBuffer(m_thv[index],1,1,1,thv)<1) return(WRONG_VALUE);
      if(thv[0]==1.0)trend[index]=ORDER_TYPE_BUY;
      if(thv[0]==0.0)trend[index]=ORDER_TYPE_SELL;
     }

   if(m_rsi_f[index]==INVALID_HANDLE || m_rsi_f[index]==0){m_rsi_f[index]=iRSI(symbol,PERIOD_CURRENT,period_RSI_F,PRICE_CLOSE);return(WRONG_VALUE);}
   if(CopyBuffer(m_rsi_f[index],0,0,3,rsi_f)<3) return(WRONG_VALUE);

      
     
   while(trend[index]==WRONG_VALUE && !IsStopped());

   if(CopyBuffer(m_rsi_f[index],0,0,3,rsi_f)<3) return(WRONG_VALUE);

   if(trend[index]==ORDER_TYPE_BUY)
     {
      if(signal_01 && rsi_f[1]<-100.0)return(ORDER_TYPE_BUY);
      if(signal_02 && rsi_f[1]<-100.0 && rsi_f[0]>-110.0)return(ORDER_TYPE_BUY);
      if(signal_03 && rsi_f[1]>-100.0 && rsi_f[0]<-110.0)return(ORDER_TYPE_BUY);
      if(signal_04 && rsi_f[1]>100.0 && rsi_f[0]<110.0)return(ORDER_TYPE_BUY);
      if(signal_05 && rsi_f[1]>100.0)return(ORDER_TYPE_BUY);
     
     }
   if(trend[index]==ORDER_TYPE_SELL)
     {
      if(signal_01 && rsi_f[1]>100)return(ORDER_TYPE_SELL);
      if(signal_02 && rsi_f[1]>100 && rsi_f[0]<110)return(ORDER_TYPE_SELL);
      if(signal_03 && rsi_f[1]<100 && rsi_f[0]>110)return(ORDER_TYPE_SELL);
      if(signal_04 && rsi_f[1]<-100 && rsi_f[0]>-110)return(ORDER_TYPE_SELL);
      if(signal_05 && rsi_f[1]<-100)return(ORDER_TYPE_SELL);
     
     }

   return(WRONG_VALUE);
  }
 
Сергей Криушин:
Versucht, für RSI-Indikator übersetzen - hat nicht funktioniert... anscheinend es nicht mit der Bibliothek...
Und woCopyBuffer im Trenddefinitionsblock verloren geht und RSI standardmäßig 70 und 30 Stufen hat.
 
Sergey Gritsay:
Und woCopyBuffer in der Trenddefinition Block verloren, und RSI hat 70 und 30 Standard-Ebenen.
Ja, ich habe etwas durcheinander gebracht... ich hatte auch hundert im Kopf... Ja, ich dachte, es wäre so leicht und einfach...)))
 

Bitte teilen Sie mir mit, wohin ich schreiben soll oder wer mir helfen kann, 2 Fehler im Berater '}' zu korrigieren. - unerwartetes Programmende '{' - unausgeglichene Klammern TMA.mq4

extern int   TakeProfit       =100;
extern int   StopLoss         =50;
extern double Lots            = 0.01;
extern int    Slippage        =5;
extern string comment         ="Продажа";
extern int    Megic           = 123;
extern string Indi            = "данные индикатора";
extern string TimeFrame       = "current time frame";//текущее время кадра
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;

double PriceHigh, PriceLow, SL, TP;
int ticket;

int init()
{
     if(Digits==3|| Digits==5)
{    
     
  
 TakeProfit*=10;
    StopLoss*=10;
     Slippage*=10;
     
     
}   
   
    return(0);
    
}

int start()

{
      PriceHigh= iCustom(Symbol(),0,"TMA with Distancer",TimeFrame,HalfLength,Price, ATRMultiplier,ATRPeriod, Interpolate,1,0);
      PriceLow= iCustom(Symbol(),0,"TMA with Distancer",TimeFrame,HalfLength,Price, ATRMultiplier,ATRPeriod, Interpolate,2,0);
    
      if(Bid>=(PriceHigh);
     {
      SL=NormalizeDouble(Bid+StopLoss*Point,Digits);
      TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      
     
     ticket=OrderSend(Simbol(),OP_SELL,Lots,Bid,Slippage,0,0,comment,123,0,Maroon);
     
     
 
    
     if(ticket>0);
     
{ 
   if  (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true);
      
      OrderModify(ticket,OrderOpenPrice,ST,TP,0);
      
     }
}
      

   if(Ask<0);
{
   ST=NormalizeDouble(Ask-StopLoss*Point,Digits);
   TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
  
     ticket=OrderSend(Simbol(),OP_BUY,Lots,Ask,Slippage,0,0,comment,123,0,clrDarkBlue);
     

    
     if(ticket>0);
     
{ 
   if  (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true);
       
      OrderModify(ticket,OrderOpenPrice,ST,TP,0);
     
     }
     return(0);
     
 }

  int CountSell()
  {
   int count=0;
   for(int trede=OrdersTotal()-1;tred>=0;tread--)
   {
    OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Megic)
    {
    if (OrderType()==OP_SELL)count==;
    }
    }
    return(count);
    }
    
        
 int CountBuy()
  {
   int count=0;
   for(int trede=OrdersTotal()-1;tred>=0;tread--)
   {
    OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Megic)
    {
    if (OrderType()==OP_BUY)count==;
    }
    }
    return(count);
    }


 
vladislavch19:

Bitte teilen Sie mir mit, wohin ich schreiben soll oder wer mir helfen kann, 2 Fehler im Berater '}' zu korrigieren. - unerwartetes Programmende '{' - unausgewogene Klammern TMA.mq4



Bitte fügen Sie den Code korrekt ein:Fügen Sie den Code korrekt im Forum ein(ich habe Ihre Nachricht korrigiert).

Hinzugefügt: Ich empfehle auch dringend, den Code Styler zu verwenden - er wird helfen, Fehler zu erkennen(Arbeit mit Quellcode: Styler - Programmentwicklung).