Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 148

 

Merhaba.
OrderSelect işlevi 0 hatası veriyor (ERR_NO_ERROR - Ticaret işlemi başarılı oldu)???
Bu hata nasıl önlenir?
Programın kodunu ve günlükten girişleri ekliyorum.
Samimi olarak. shurkin.

 //+------------------------------------------------------------------+
//|                                                    PoligonTd.mq4 |
//|                                           17 сентября 2013 года. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "17 сентября 2013 года."
#property link       ""

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----Функция OrderSelect--------------------------------------------+
string Str= "#20552937 buy 1.00 GBPUSD at 1.55450" ; //Строка
int Tct=StrToDouble( StringSubstr (Str, 1 , 9 )); //Номер ордера
   if ( OrderSelect (Tct,SELECT_BY_TICKET)== true ) //Выбор ордера по номеру
string OdSmb=OrderSymbol(); //Символ ордера
   else Print ( "OrderSelect() вернул ошибку - " , GetLastError ());
Print ( "Кс:" , " Str=" ,Str, "; Tct " ,Tct, "; OdSmb " ,OdSmb, "?" ); //Кс
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+

2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: kaldırıldı
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: uninit sebep 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: X: Str=#20552937 1.55450'den 1.00 GBPUSD satın alın; Tct 20552937; OdSmb?
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: OrderSelect() bir hata döndürdü - 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: başarıyla yüklendi

 
Shurkin :

Merhaba.
OrderSelect işlevi 0 hatası veriyor (ERR_NO_ERROR - Ticaret işlemi başarılı oldu)???
Bu hata nasıl önlenir?
Programın kodunu ve günlükten girişleri ekliyorum.
Samimi olarak. shurkin.

2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: kaldırıldı
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: uninit sebep 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: X: Str=#20552937 1.55450'den 1.00 GBPUSD satın alın; Tct 20552937; OdSmb?
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: OrderSelect() bir hata döndürdü - 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Günlük: başarıyla yüklendi

Aslında seçim hatası yoktur, sadece böyle bir bilete sahip bir sipariş yoktur.
 
Sepulca :
Aslında seçim hatası yoktur, sadece böyle bir bilete sahip bir sipariş yoktur.

Böyle bir biletle sipariş yoksa, OrderSelect() false döndürür

Burada, görünüşe göre, başka bir yere gittiğimiz için bir hata var. Soru şu: neden sıfır?

 

En az masrafla mantığı uygulamak için hiçbir şekilde anlamayacağım.

if(...) durdurma emrini ayarla;

if(sipariş ömrü>süresi) siparişi iptal et ve if(..) yeni bir sipariş ver;

Zorluk şu ki, halihazırda açık olan birkaç pozisyon olabilir ve hepsine nasıl eşlik edilir? En kolay yol nedir?

Teşekkür ederim!

 

init () özel işlevinden vazgeçmeyi düşünüyorum. Bence bu doğru bir karar, değil mi?

Ben yolu şöyle görüyorum:

1. Global düzeyde bir değişken bildiririz, örneğin şöyle:

gInitTrue = false ;

Ardından, INIT'inizi oluşturun:

 bool myInit()
{
  // Инициализируем..
  // неоходимые..
  // нам..
  // переменные..
  return ( true );
}

Başlangıcın en başında şöyle:

 if (gInitTrue == false)
    myInit();
Daha deneyimli insanların bu yaklaşımın nabonostisi ve benim tarafımdan önerilen bu sorunu çözme varyantının doğruluğu hakkında görüşlerini duymak ilginç.
 
Sepulca :

Daha fazla tampon.

Oops, hatayı anladım. 2 tampon için 2 renk eklemek de gerekliydi.
 
hoz :

init () özel işlevinden vazgeçmeyi düşünüyorum. Bence bu doğru bir karar, değil mi?

Ben yolu şöyle görüyorum:

1. Global düzeyde bir değişken bildiririz, örneğin şöyle:

Ardından, INIT'inizi oluşturun:

Başlangıcın en başında şöyle:

Daha deneyimli insanların bu yaklaşımın nabonostisi ve benim tarafımdan önerilen bu sorunu çözme varyantının doğruluğu hakkında görüşlerini duymak ilginç.

Yeni çözümden gelen duyumların yeniliği nedir? :-))

Bir cehennem. Bunu yapmaya hiç gerek yoktu.

 
artmedia70 :

Böyle bir biletle sipariş yoksa, OrderSelect() false döndürür

Burada, görünüşe göre, başka bir yere gittiğimiz için bir hata var. Soru şu: neden sıfır?



Kontrol ettim - bilet numarası uygun mu - her şey yolunda gidiyor,

değilse, işlev False döndürür, ancak OrderSelect() hiçbir şey olmamış gibi sessizdir, SIFIR ve bu kadar.

 
Zhunko :

Yeni çözümden gelen duyumların yeniliği nedir? :-))

Bir cehennem. Bunu yapmaya hiç gerek yoktu.



Ve konuya daha yakınsa? INIT'in örneğin bağlantı kesilmesi veya diğer bazı benzer durumlarla başarısız olabileceği uzun süredir tartışılmaktadır. Çünkü öngörülemeyen durumlarda daha sonra verileri yeniden başlatmaz ve yalnızca bir kez çalışır! Yani bu tamamen doğru bir seçenek değil.
 

Soru aptalca ama sanki cevabı hiçbir yerde görmemişim ya da belki çarpık bakmışım:

İşlevlerde ve belki başka bir yerde, veri türünden sonra & sembolüyle karşılaştım ve yanılmıyorsam bir keresinde && gördüm.

func( int& mm_mode, string sembolü, int magic, bool& stop) {

Bu ne için? ne verir ve yapar? Bu konuda daha fazla bilgi bulabilirseniz bağlantı;)