Hatalar, hatalar, sorular - sayfa 873

 
mario065 :

Merhaba Reshetov,

Bu senin için "Ne oluyor?", ama benim için durum, değişiklik işlevine bir çağrı yapmanız gerektiği zamandır.

Koda baksaydın yazmazdın.

Kodda:

  double Open = NormalizeDouble ( PositionGetDouble ( POSITION_PRICE_OPEN ), 4 );
   double SL   = NormalizeDouble ( PositionGetDouble ( POSITION_SL ), 4 );
  double TP   = NormalizeDouble ( PositionGetDouble ( POSITION_TP ), 4 );

Onu orada bulundurmanın ne anlamı var? Bu saçmalığı hangi pozisyon için hesaplıyorsunuz? If()'den önce orada SL, TP ve Open değişkenlerinin hangi değerlerine sahip olduğunuzu ve günlükteki açık pozisyonun ne olduğunu görmek için Print()'i kullanmayı veya hata ayıklayıcıyı kullanmayı deneyin.
 

Teşekkürler Reshetov,

Bitmiş:

   double buy_trail = 0 ;
   double sel_trail = 0 ;
   double SL,TP,Open;
   if ( PositionSelect ( Symbol ())){
     if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
      {
      Open = PositionGetDouble ( POSITION_PRICE_OPEN );
      SL   = PositionGetDouble ( POSITION_SL );
      TP   = PositionGetDouble ( POSITION_TP );
      Bid  = SymbolInfoDouble ( Symbol (), SYMBOL_BID );
      buy_trail = NormalizeDouble (Bid - Open, Digits ());
       if (buy_trail > MStop)
       {
         if ( NormalizeDouble ((Bid - MStop), Digits ()) >= Open && Open > SL)
          {
           ModifyPosition( Symbol (),Open,TP);
          }
           if ( NormalizeDouble ((Bid - MStop), Digits ()) > SL && Open <= SL)
           {
            ModifyPosition( Symbol (), NormalizeDouble ((SL + 0.001 ), Digits ()),TP);
           }
        }
      }
     if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
      {
      Open = PositionGetDouble ( POSITION_PRICE_OPEN );
      SL   = PositionGetDouble ( POSITION_SL );
      TP   = PositionGetDouble ( POSITION_TP );
      Ask  = SymbolInfoDouble ( Symbol (), SYMBOL_ASK );
      sel_trail = NormalizeDouble (Open - Ask, Digits ());
       if (sel_trail > MStop)
       { 
         if ( NormalizeDouble ((Ask + MStop), Digits ()) <= Open && Open < SL)
          {
           ModifyPosition( Symbol (),Open,TP);
          }
           if ( NormalizeDouble ((Ask + MStop), Digits ()) < SL && Open >= SL)
           {
            ModifyPosition( Symbol (), NormalizeDouble ((SL - 0.001 ), Digits ()),TP);
           }
        }
      }
     }

Değişiklik işlevinin kendisi:

 //+------------------------------------------------------------------+
//| Modify position.                                                 |
//+------------------------------------------------------------------+
bool ModifyPosition( const string symbol, double StopLoss, double Takeprofit){
//---- обявяване на структурата и резултата на търговското искане
   MqlTradeRequest request={ 0 };
   MqlTradeResult result={ 0 };
//---- структурна инициализация на  търговското искане MqlTradeRequest за модифициране на  позиция
   request.action       = TRADE_ACTION_SLTP ;
   request.symbol       = symbol;
   request.sl           = StopLoss;
   request.tp           = Takeprofit;
   string word          = "" ;
   StringConcatenate (word,
                     "<<< ============ Modifyposition():   Модифицираме позицията  " ,
                     symbol, " ============ >>>" );
   Print (word);
//---- модифицираме позицията и  проверяваме резултата от търговското искане
   if (! OrderSend (request,result) || result.deal== 0 )
     {
       Print ( "Modify error =" , GetLastError ());
       return ( false );
     }
   return ( true );
  }

Yani şimdi pozisyon bulamıyor.

Şunlardan kurtuldum: ERR_TRADE_SEND_FAILED - 4756

Bekle 4753- Konum bulunamadı.

Bazen işe yarıyor ama öyle bir yazım hatası da var ki pozisyonu bulamadı.

 
mario065 :

Teşekkürler Reshetov,

Bitmiş:

Değişiklik işlevinin kendisi:

Yani şimdi pozisyon bulamıyor.

Şunlardan kurtuldum: ERR_TRADE_SEND_FAILED - 4756

Bekle 4753- Konum bulunamadı.

Bazen işe yarıyor ama öyle bir yazım hatası da var ki pozisyonu bulamadı.

Hazır ticaret sınıflarını kullanmak daha iyidir. Bir Uzman Danışman yazarken Standart Kitaplık ticaret sınıflarının nasıl kullanılacağına bakın.

Örneğin, bir karakterin konumunu değiştirmek:

 //--- Класс CTrade
#include <Trade\Trade.mqh>

//--- Объект класса CTrade
CTrade mytrade;



void OnTick () {
...
   if (myposition.Select( _Symbol ))
  {
     int newStoploss = 250 ;
     int newTakeprofit = 500 ;
     double SL = mysymbol.Ask() – newStoploss* _Point ;    
     double TP = mysymbol.Ask() + newTakeprofit* _Point ;  
     // модифицируем открытую позицию по этому символу
    mytrade.PositionModify( _Symbol ,SL,TP);
  }
...
}
Çok kısa ve net çıkıyor.
 

Hepsi alındı.

Yedelkin yardımcı oldu.İşte kod.

Teşekkürler :)

Dosyalar:
 

IP adresimin yasağını kaldır (şimdi ev bilgisayarımda şunu alıyorum:

 403 - запрещено. Доступ запрещен.
Предоставленные учетные данные не дают права на просмотр этого каталога или страницы.

).

Aynı zamanda, bulutta ve sinyal hizmetlerinde yetkilendirme ortadan kalktı ve bu arada, gerçek bir sayaç kullanır (şimdi yetkilendirme olmadığı için kullanılır) sinyalleri.

10 terminale kadar + tarayıcı başlatıldı. Site indirmedi, kırılmadı vs. - genel olarak forum kurallarına aykırı bir şey yapmadı.

 
notused :

IP adresimin yasağını kaldır (şimdi ev bilgisayarımda şunu alıyorum:

).

Aynı zamanda, bulutta ve sinyal hizmetlerinde yetkilendirme ortadan kalktı ve bu arada, gerçek bir sayaç kullanır (şimdi yetkilendirme olmadığı için kullanılır) sinyalleri.

10 terminale kadar + tarayıcı başlatıldı. Site indirmedi, kırılmadı vs. - genel olarak forum kurallarına aykırı bir şey yapmadı.

Aynı sıkıntı, yaklaşık 14-00 Kiev saatinden itibaren moderatör hamamda olmadığımı söyledi, o zaman sebebi neydi?

 
notused :

IP adresimin yasağını kaldır (şimdi ev bilgisayarımda şunu alıyorum:

).

Aynı zamanda, bulutta ve sinyal hizmetlerinde yetkilendirme ortadan kalktı ve bu arada, gerçek bir sayaç kullanır (şimdi yetkilendirme olmadığı için kullanılır) sinyalleri.

10 terminale kadar + tarayıcı başlatıldı. Site indirmedi, kırılmadı vs. - genel olarak forum kurallarına aykırı bir şey yapmadı.

Garip? Sonuçta, banyoda ve hatta IP ile, o zaman forumda da iletişim kuramıyorsunuz gibi görünüyor mu?
 
Reshetov :
Garip? Sonuçta, banyoda ve hatta IP ile, o zaman forumda da iletişim kuramıyorsunuz gibi görünüyor mu?

Moderatör, takma adımın altına girdiğim için banyoda olmadığımı söyledi, ancak IP'yi otomatik gizleme ipi ile değiştirdim, ancak bu sadece bir maske, terminaller hala yerel olanın altında çalışıyor ve sinyaller iletilmiyor!

Adminler cevap versin!

 
remjte :

Moderatör, takma adımın altına girdiğim için banyoda olmadığımı söyledi, ancak IP'yi otomatik gizleme ipi ile değiştirdim, ancak bu sadece bir maske, terminaller hala yerel olanların altında çalışıyor ve sinyaller iletilmiyor!

Adminler lütfen cevap verin!

Servis masasına başvurmanız daha iyi olur. Yine de, profiliniz engellenirse muhtemelen işe yaramaz mı?
 
Reshetov : Reşetov :
Daha iyi iletişim servis masası

Başka bir IP'den giriş yapıyorum. Ve hesap yasaklanmadı - yasaklanan IP'dir. Servise yazdım yarın ne diyecekler bekleyeceğim.

Neden: