İlginç bir ticaret fikri var. Koddaki hataları bulmama yardım et (mql4). - sayfa 16

 
Sergey Gritsay :
MT5 sürümündeki sabit hatalar

Güncellemeler için teşekkürler... mt5 bir hafta boyunca iyi çalıştı... 1000'den %10'dan fazla sayarsanız... İşte bir resim... bugün 100'den fazlaydı biraz harcadım... şimdi ben Bu güncellenmiş olana bak, ayrıca çiftler halinde nasıl çalışacaklarını görmek için mt4'ü bir karikatür cmilliona grid6 https://www.mql5.com/en/code/12971 ile birleştirmeye karar verdim...))

Grafik CHFJPY, H1, 2016.03.18 12:21 UTC, MetaQuotes Software Corp., MetaTrader 5, Demo

Мультивалютный сеточник GRID 6 SYMBOLS
Мультивалютный сеточник GRID 6 SYMBOLS
  • oylar: 19
  • 2015.05.11
  • Vladimir Khlystov
  • www.mql5.com
Советник выставляет сети стоп-ордеров по нескольким инструментам, далее закрывает все при достижении указанной прибыли.
 
En son sürüm - net çalışıyor - pip yapabilirsiniz - elinizle kapattığınızda aynı yönde açılıyor, bir tür gecikme olması gerekecek ... sıfırdan biraz daha fazla izlemeye başladı .. 2-4 puan, bu hemen geri dönerse olur... borç düşünür - oklar uzun süredir duruyor ama pozisyon yok... ve dahası, ile karşılaştırıldığında daha fazla sinyal vermeye başladı. öncekiler - peki, bu doğru, kaba bir hesaplama ... peki, hepsi aynı, bu en iyi seçenek ... Tekrar teşekkürler ... bu - gerisi sessiz - ay-ay, başka kim buldu bir şey ... ya da uğursuzluk getirmek istemiyorlar ...))
 
Сергей Криушин :
En son sürüm - net çalışıyor - pip yapabilirsiniz - elinizle kapattığınızda aynı yönde açılıyor, bir tür gecikme olması gerekecek ... sıfırdan biraz daha fazla izlemeye başladı .. 2-4 puan, bu hemen geri giderse olur... borç düşünür - oklar uzun süredir duruyor ama pozisyon yok... öncekiler - peki, bu doğru, kaba bir hesaplama ... peki, hepsi aynı, en iyi seçenek bu ... Tekrar teşekkürler ... bu - gerisi sessiz - ay-ay, başka kim bir şey buldu ... veya uğursuzluk getirmek istemiyorlar ...))
çok fazla karakter varsa, hepsini hesaplayana kadar yavaşlar. Ve teoride yeni bir bar gelene kadar açılmamalı, yani bir barda bir anlaşma yapmalıdır.
 

Bu stratejinin sinyallerini Martin danışmanımla bir araya getirdim, işte Ocak 2015'ten bugüne sonuç

EUR/USD:

USDCHF:

 
Sergey Gritsay :

Bu stratejinin sinyallerini Martin danışmanımla bir araya getirdim, işte Ocak 2015'ten bugüne sonuç

EUR/USD:

USDCHF:

Ayrıca https://www.mql5.com/ru/code/13315 adresinden MT5'te iyi bir Martin var - son kaybedilen ticareti çarpar...
 //+------------------------------------------------------------------+
//| Виртуальный стоп                                                 |
//+------------------------------------------------------------------+
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
  • oylar: 19
  • 2015.06.25
  • Andrew Kornishkin
  • www.mql5.com
Советник Well Martin на основе двух индикаторов: Bollinger Bands и ADX.
 
Göstergeyi RSI'ye dönüştürmeye çalıştım - işe yaramadı... görünüşe göre kütüphaneyle uyuşmuyor...
 //+------------------------------------------------------------------+
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 );
  }
 
Сергей Криушин :
Göstergeyi RSI'ye dönüştürmeye çalıştım - işe yaramadı... görünüşe göre kütüphaneyle uyuşmuyor...
Ve CopyBuffer trend algılama bloğunda nerede kaybetti ve RSI 70 ve 30 seviyeleri standarttır.
 
Sergey Gritsay :
Ve CopyBuffer trend algılama bloğunda nerede kaybetti ve RSI 70 ve 30 seviyeleri standarttır.
Evet, bir şeyi kandırdım ... Kafamda da yüzlerce vardı ... evet, çok kolay ve basit olduğunu düşündüm ...))) bom değiştirmek ...
 

Bana nereye yazacağımı veya '}' danışmanındaki 2 hatayı düzeltmeye kimin yardım edeceğini söyle - beklenmedik program sonu '{' - dengesiz parantezler 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 :

Bana nereye yazacağımı veya '}' danışmanındaki 2 hatayı düzeltmeye kimin yardım edeceğini söyle - beklenmedik program sonu '{' - dengesiz parantezler TMA.mq4



Lütfen kodu doğru yapıştırın: Kodu foruma doğru yapıştırıyoruz (Mesajınızı düzelttim).

Eklendi: Ayrıca bir kod şekillendirici kullanılması şiddetle tavsiye edilir - hataların tespit edilmesine yardımcı olacaktır ( Kaynak koduyla çalışma: Styler - Program geliştirme ).