[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 286

 

Merhaba. Lütfen bana strateji test cihazı gibi grafikte giriş ve çıkış noktalarını işaretleyecek bir danışman olup olmadığını söyleyin ???

 

Ve manuel olarak - size ne uymuyor? Hesap Geçmişinden fırsatları fare ile grafiğe sürükleyin ve orada gösterilecektir!

Veya bir komut dosyasıyla alın - http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 
TheXpert >> :

ShellExecute, "aç" komutu, emnip.


Sayesinde
 
rid >> :

Dışarıya yerleştirilmelidir. Hiçbirinin içinde değil. işlevler, ancak ayrı bir bağımsız işlev olarak.

Bunun gibi :


Danışmanın bu koşullar altında çalışacağından emin değilim. Çünkü ilk pozisyon açılamayacak...

isCloseLastPosByTake() işlevini satın alma koşulundan veya satış koşulundan kaldırmak gerekir.

Daha sonra danışman çalışacaktır.

Danışmanın kodunu, kurtulma tavsiyesi üzerine düzeltmelerle veriyorum, sadece f-i başla

 //+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ( )
   {
//----
     // Узнаем уровень стопов и спрэд
     int Spread = MarketInfo ( Symbol ( ) , MODE_SPREAD ) ;
     int StopLevel = MarketInfo ( Symbol ( ) , MODE_STOPLEVEL ) ;

     // Рассчитываем значения средних на 0-ом и 1-ом барах
     double MAF_0 = iMA ( NULL , 0 , MAFP , 0 , 1 , 1 , 0 ) ;
     double MAF_1 = iMA ( NULL , 0 , MAFP , 0 , 1 , 1 , 1 ) ;
     double MAS_0 = iMA ( NULL , 0 , MASP , 0 , 1 , 1 , 0 ) ;
     double MAS_1 = iMA ( NULL , 0 , MASP , 0 , 1 , 1 , 1 ) ;
    
   // открытие позиции Buy покупка
     if ( MAF_1 < MAS_1 & & MAF_0 > MAS_0 )                          {
     if ( isCloseLastPosByTake ( NULL , OP_SELL , MagicNumber ) = = true ) {
     if ( CheckOrders ( OP_SELL ) )                                        {
       if ( StopLoss < = StopLevel + Spread )
         double SL = 0 ;          else          SL = Ask - StopLoss * Point ;
       if ( TakeProfit < = StopLevel - Spread )
         double TP = 0 ;          else          TP = Ask + TakeProfit * Point ;
       if ( ! OrderSend ( Symbol ( ) , OP_BUY , Lots , Ask , 5 , SL , TP , NULL , MagicNumber ) )
         Print ( "Не открыт ордер Buy. Ошибка №" , GetLastError ( ) ) ; 
                 }
               }
               }
//-------------------Конец покупки -----------------------
    
   //  ----- Открытие позиции Sell продажа------------  
     if ( MAF_1 > MAS_1 & & MAF_0 < MAS_0 )                          {
     if ( CheckOrders ( OP_BUY ) )                                      {
       if ( StopLoss < = StopLevel + Spread )
         SL = 0 ;          else          SL = Bid + StopLoss * Point ;
       if ( TakeProfit < = StopLevel - Spread )
         TP = 0 ;          else          TP = Bid - TakeProfit * Point ;
       if ( ! OrderSend ( Symbol ( ) , OP_SELL , Lots , Bid , 5 , SL , TP , NULL , MagicNumber ) )
         Print ( "Не открыт ордер Sell. Ошибка №" , GetLastError ( ) ) ; 
                 }
                 }
               }
       //---конец блока продажи ------------------------------
     
//----
   return ( 0 ) ;
   } //+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+

//ЖЖЖЖЖЖЖ Другие вызываемые пользовательские функции ЖЖЖЖЖЖ
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия           |
//|  последней позиции по тейку.                                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake ( string sy = "" , int op = - 1 , int mn = - 1 ) {
   datetime t ;
   double    ocp , otp ;
   int       dg , i , j = - 1 , k = OrdersHistoryTotal ( ) ;

   if ( sy = = "0" ) sy = Symbol ( ) ;
   for ( i = 0 ; i < k ; i + + ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {
       if ( OrderSymbol ( ) = = sy | | sy = = "" ) {
         if ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL ) {
           if ( op < 0 | | OrderType ( ) = = op ) {
             if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) {
               if ( t < OrderCloseTime ( ) ) {
                t = OrderCloseTime ( ) ;
                j = i ;
               } } } } } } }

   if ( OrderSelect ( j , SELECT_BY_POS , MODE_HISTORY ) ) {
    dg = MarketInfo ( sy , MODE_DIGITS ) ;
     if ( dg = = 0 ) if ( StringFind ( OrderSymbol ( ) , "JPY" ) < 0 ) dg = 4 ; else dg = 2 ;
    ocp = NormalizeDouble ( OrderClosePrice ( ) , dg ) ;
    otp = NormalizeDouble ( OrderTakeProfit ( ) , dg ) ;
     if ( ocp = = otp ) return ( True ) ;
   }
   return ( False ) ;
}
 

derleme sırasında hata verdi

2;73;C:\Program Files\MetaTrader - Alpari\experts\SimpleMA22333.mq4;103:3;'}' - unbalanced parentheses

burası etiketlendi * nazik insanlara yardım et .....

   return(0);
 * }//+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+
 
igrok2008 писал(а) >>

derleme sırasında hata verdi

burası etiketlendi * nazik insanlara yardım et .....

Başlangıç işlevinde küme parantezlerinin sayısı farklıdır

 //+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ( ) {
     // Узнаем уровень стопов и спрэд
     int Spread = MarketInfo ( Symbol ( ) , MODE_SPREAD ) ;
     int StopLevel = MarketInfo ( Symbol ( ) , MODE_STOPLEVEL ) ;

     // Рассчитываем значения средних на 0-ом и 1-ом барах
     double MAF_0 = iMA ( NULL , 0 , MAFP , 0 , 1 , 1 , 0 ) ;
     double MAF_1 = iMA ( NULL , 0 , MAFP , 0 , 1 , 1 , 1 ) ;
     double MAS_0 = iMA ( NULL , 0 , MASP , 0 , 1 , 1 , 0 ) ;
     double MAS_1 = iMA ( NULL , 0 , MASP , 0 , 1 , 1 , 1 ) ;
    
   // открытие позиции Buy покупка
     if ( MAF_1 < MAS_1 & & MAF_0 > MAS_0 )                          {
         if ( isCloseLastPosByTake ( NULL , OP_SELL , MagicNumber ) = = true ) {
             if ( CheckOrders ( OP_SELL ) )                                        {
                 if ( StopLoss < = StopLevel + Spread )    double SL = 0 ;          else          SL = Ask - StopLoss * Point ;
                 if ( TakeProfit < = StopLevel - Spread ) double TP = 0 ;          else          TP = Ask + TakeProfit * Point ;
                 if ( ! OrderSend ( Symbol ( ) , OP_BUY , Lots , Ask , 5 , SL , TP , NULL , MagicNumber ) )
                     Print ( "Не открыт ордер Buy. Ошибка №" , GetLastError ( ) ) ; 
             }
         }
     }
     //-------------------Конец покупки -----------------------
    
     //  ----- Открытие позиции Sell продажа------------  
     if ( MAF_1 > MAS_1 & & MAF_0 < MAS_0 )                          {
         if ( isCloseLastPosByTake ( NULL , OP_BUY , MagicNumber ) = = true ) {
             if ( CheckOrders ( OP_BUY ) )                                      {
               if ( StopLoss < = StopLevel + Spread )              SL = 0 ;          else          SL = Bid + StopLoss * Point ;
               if ( TakeProfit < = StopLevel - Spread )            TP = 0 ;          else          TP = Bid - TakeProfit * Point ;
               if ( ! OrderSend ( Symbol ( ) , OP_SELL , Lots , Bid , 5 , SL , TP , NULL , MagicNumber ) )
                   Print ( "Не открыт ордер Sell. Ошибка №" , GetLastError ( ) ) ; 
             }
         }
     }
     //---конец блока продажи ------------------------------
    
     return ( 0 ) ;
} //+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+
Böyle bir şey olmalıydı. mantığını anlamadım
 
igrok2008 >> :

Danışmanın kodunu, kurtulma tavsiyesi üzerine düzeltmelerle veriyorum, sadece f-i başla


Satış bloğundan fazladan küme parantezini kaldırın. Açılan parantezlerin sayısının kapanış parantezlerinin sayısına eşit olması gerektiğini yazdım. Ve orada açık ve kapalı 2 paranteziniz var - üç!

Ve elbette bir derleme hatası olacaktır.

 
rid >> :

Satış bloğundan fazladan küme parantezini kaldırın. Açılan parantezlerin sayısının kapanış parantezlerinin sayısına eşit olması gerektiğini yazdım. Ve orada açık ve kapalı 2 paranteziniz var - üç!

Ve elbette bir derleme hatası olacaktır.

Parantez açmaya ne dersiniz?


aaaaaaaaaa anladım {......... TEŞEKKÜRLER!!!!!!!!!!!!! :-))))))))

Test edeceğim ........ Cho ise beni suçlama, sorularla deneyeceğim.

 
igrok2008 писал(а) >>

Parantez açmaya ne dersiniz?

aaaaaaaaaa anladım {......... TEŞEKKÜRLER!!!!!!!!!!!!! :-))))))))

Test edeceğim ........ Cho ise beni suçlama, sorularla deneyeceğim.

Düzeltilmiş bir versiyon yaptım.

 

Bu düzeltilmiş sürüm çalışmayacaktır. İlk ticareti açamayacak. Çünkü yavl sürümünüzde herhangi bir ilk işlemi açmak için bir koşul. bir öncekini alarak veya durdurarak kapatmak!

Onlar. - kısır döngü.