Hatalar, hatalar, sorular - sayfa 2410

 
Vladimir Karputov :

nu-nu :)

TAMAM. Bizi aydınlatın. Koddaki hangi hata veya hangi kod, test cihazındaki bir pozisyonu başka bir enstrümanın fiyatından kapatabilir . Gerçekten, gerçekten ilgileniyorum.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Aleksey Sergan :

Birkaç bin satır kod. Başvuru yapmanın bir anlamı yok. statik değişkenler yoktur. Sınıflar var. Her durumda, bu bir testçinin hatasıdır.

İşte senin hatan.

Hata ayıklama modunda, bir ticaret talebi göndermeden önce kontrol edin. Sembole ve fiyatlara bakın. Ve en azından "Tüm onaylar" modunda test edin.

 
Andrey Barinov :

TAMAM. Bizi aydınlatın. Koddaki hangi hata veya hangi kod, test cihazındaki bir pozisyonu başka bir enstrümanın fiyatından kapatabilir . Gerçekten, gerçekten ilgileniyorum.

Kolay. Kod eğriliğine doğrudan bağımlılık. Ben kendim yaptım :). Bir karakter sınıfının başlatılmasını kontrol etmek için yeterince düşünülmemiş sistem. Ve artı buna statik değişkenler.

Genel olarak, sorgulayıcıdan bir kod olmadan daha fazla konuşmak anlamsızdır.

 
Vladimir Karputov :

Kolay. Kod eğriliğine doğrudan bağımlılık. Ben kendim yaptım :). Bir karakter sınıfının başlatılmasını kontrol etmek için yeterince düşünülmemiş sistem. Ve artı buna statik değişkenler.

Genel olarak, sorgulayıcıdan bir kod olmadan daha fazla konuşmak anlamsızdır.

Bir kod örneği gösterebilir misiniz? Bir EURUSD pozisyonu GPBUSD fiyatından nasıl kapatılır ?

Eğer kolaysa, o zaman senin için zor olmayacak. Çok minnettar kalırım.

 
Andrey Barinov :

Bir kod örneği gösterebilir misiniz? Bir EURUSD pozisyonu GPBUSD fiyatından nasıl kapatılır ?

Eğer kolaysa, o zaman senin için zor olmayacak. Çok minnettar kalırım.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Vladimir Karputov , 2019.03.24 05:58

Kolay. Kod eğriliğine doğrudan bağımlılık. Ben kendim yaptım :). Bir karakter sınıfının başlatılmasını kontrol etmek için yeterince düşünülmemiş sistem. Ve artı buna statik değişkenler.

Genel olarak, sorgulayıcıdan bir kod olmadan daha fazla konuşmak anlamsızdır.


 
Yapabileceğiniz harika test kâsesi budur, artık tırtılları takip ederek hareket ettirmenize gerek yok, harika)
 

Hata ayıklama modunda, oluşturma hatası eksik. Pozisyon bir ticaret emriyle değil, zararı durdurarak kapatılır:



Kodda mantıksal bir hata oldukça olasıdır, büyük olasılıkla burada, bakacağım, elbette, nasıl olduğunu henüz bilmiyorum - hata ayıklamada hata yok:



pozisyonun mevcut fiyatından 3000 puan daha yüksek 1.60704 fiyatından emir için stop oluşturmayı başarır.

Bu durumda test cihazı, bir durdurmanın kurulumunu yasaklamak zorunda kalacaktır.

 

Günlüğe bakıyorum:

durağı değiştirme emri vurgulanan satır olan gpbusd için gönderilir, ancak aslında bir sonraki eurusd için yürütülür.


İşte durdurma ayar kodu


 bool MyOrderSend( MqlTradeRequest &req, MqlTradeResult &res ){

  
   //Print("Попытка выполнения OrderSend ... ");
   Print ( "Try to execute OrderSend ... for " , req.symbol );
   ResetLastError ();
   if ( OrderSend ( req, res  )){
     if ( res.retcode != TRADE_RETCODE_DONE ){
       //Print("Ошибка обработки торгового запроса,код ответа сервера: ", res.retcode, "Описание:", TradeServerReturnCodeDescription(res.retcode) );
       Print ( "Error of trade requaest: " , res.retcode, "Description:" , TradeServerReturnCodeDescription(res.retcode) );
       Print (STradeRequest(req) );
       return ( false );
    } else {
       //Print("Успех, код ответа сервера: ", IntegerToString(res.retcode), " Описание:",  TradeServerReturnCodeDescription(res.retcode)  );
       Print ( "Success, return code is : " , IntegerToString (res.retcode), " Description:" ,  TradeServerReturnCodeDescription(res.retcode)  );
       Print (STradeRequest(req) );
    }
     return ( true );
  } else {
     //Print("Ошибка выполнения OrderSend в ", __FUNCTION__, " _LastError=", _LastError, " ",  ErrorDescription(_LastError) );
     Print ( "Error of execution OrderSend in " , __FUNCTION__ , " _LastError=" , _LastError , " " ,  ErrorDescription( _LastError ) );
     //Print("Код ответа сервера: ", IntegerToString(res.retcode), " Описание:",  TradeServerReturnCodeDescription(res.retcode)  );
     Print ( "Server return code : " , IntegerToString (res.retcode), " Description:" ,  TradeServerReturnCodeDescription(res.retcode)  );
     Print (STradeRequest(req) ); 
     return ( false );
  }
   return ( true );
}


nerede


 OrderSend ( req, res  )

yerel mql işlevi, aşırı yüklenmemiş.

yani tam burada

  Print ( "Try to execute OrderSend ... for " , req.symbol );


gbpusd için bir durak belirlediğini yazıyor, öyle olmalı, ama aslında


 OrderSend ( req, res  )


eurusd için yükler

 
Aleksey Sergan :

Günlüğe bakıyorum:

durağı değiştirme emri vurgulanan satır olan gpbusd için gönderilir, ancak aslında bir sonraki eurusd için yürütülür.

2 hata var.

1. Senin hatan. Kodun içinde bir yerde. GBPUSD fiyatını kullanarak bir EURUSD pozisyonu için SL'yi ayarlarsınız. Terminalin buna karşı hiçbir şeyi olmamalıdır.

2. Terminal hatası. Bu SL, GBPUSD fiyatı kullanılarak EURUSD akışında o sırada mevcut olmayan bir fiyatta tetiklenirse.

 
Aleksey Sergan :

Günlüğe bakıyorum:

durağı değiştirme emri vurgulanan satır olan gpbusd için gönderilir, ancak aslında bir sonraki eurusd için yürütülür.


İşte durdurma kurulum kodu



nerede


yerel mql işlevi, aşırı yüklenmemiş.

https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

Görünüşe göre, bir değişiklik talebi gönderirken, konum alanının önceliği var, sembolü değil. İstenen konumu yazdır

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...