Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 65

 

Bu yüzden uzmanın kendisi - gereksizleri temizledi - çok dövdü :)

Dosyalar:
 

Bir sipariş nasıl kapatılır???

Şu şekilde açıldı:

mrequest.action = TRADE_ACTION_DEAL; // anında yürütme

mrequest.price = NormalizeDouble(Sor,_Digits); // son fiyat sor

mrequest.sl = NormalizeDouble(Sor - 10000*_Point,_Digits); // kaybı durdurmak

mrequest.tp = 0; // kar almak

mrequest.symbol = _Symbol; // sembol

mrequest.volume = Çok; // takas edilecek lot sayısı

mrequest.magic = 1; // Sihirli sayı

mrequest.type = ORDER_TYPE_BUY; // sipariş satın al

mrequest.type_filling = ORDER_FILLING_FOK; // sipariş yürütme türü - ya hep ya hiç

mrequest.sapma=100; // mevcut fiyattan kayma

OrderSend(mrequest,mresult);

Soru şu ki, bir sipariş değil, birkaç sipariş açık ve seçici olarak kapatmak gerekiyor ...

 
Forex_Noob : Bir sipariş nasıl kapatılır???

Soru şu ki, bir sipariş değil, birkaç sipariş açık ve seçici olarak kapatmak gerekiyor ...

1. Kodu doğru şekilde yapıştırın .

2. Bir yönde birden fazla emir açılırsa, sonuç tek bir toplu pozisyon olur.

3. Açık bir pozisyonu kapatmak için, toplam hacmi kapatılan pozisyonun hacmine eşit olan zıt yönlü emirler vermek gerekir.

4. Pozisyonun sadece bir kısmını kapatmak gerekiyorsa, karşılık gelen toplam hacimle zıt yönlü emirler vermek gerekir.

 
Yedelkin :

1. Kodu doğru şekilde yapıştırın .

2. Bir yönde birden fazla emir açılırsa, sonuç tek bir toplu pozisyon olur.

3. Açık bir pozisyonu kapatmak için, toplam hacmi kapatılan pozisyonun hacmine eşit olan zıt yönlü emirler vermek gerekir.

4. Pozisyonun sadece bir kısmını kapatmak gerekiyorsa, karşılık gelen toplam hacimle zıt yönlü emirler vermek gerekir.

TAMAM. teşekkür etmek. ancak şimdi başka bir sorun var - pozlar her zaman bir kapanış emriyle kapatılmıyor...
 
Forex_Noob :
TAMAM. teşekkür etmek. ancak şimdi başka bir sorun var - pozlar her zaman bir kapanış emriyle kapatılmıyor...
Günlüğe bakın - sonuçlar orada yazılır.
 

Yedelkin, Reshetov ,

Merhaba,

Birkaç çift için bir göstergeden veri almanın en basit yöntemini/yolunu söyleyin.

 string Currency1 = "GBPUSD" ;
string Currency2 = "EURUSD" ;
string Currency3 = "USDCHF" ;
string Currency4 = "USDJPY" ;
int ATRHandle;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   for ( int c= 0 ;c< 4 ;c++){
   SymbolSelect (Currency1, true );
   SymbolSelect (Currency2, true );
   SymbolSelect (Currency3, true );
   SymbolSelect (Currency4, true );
  }
  ATRHandle = iATR ( Symbol (), PERIOD_M1 , 1 );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   IndicatorRelease (ATRHandle);
   Comment ( "" );        
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//Например так,как показал
  }
//+------------------------------------------------------------------+
Şimdiden teşekkür ederim.
 
mario065 : Birkaç çift için bir göstergeden veri almanın en basit yöntemini/yolunu söyle.

Bundan mı bahsediyorsun?:

ATRHandle1 = iATR (Currency1, PERIOD_M1 , 1 );
ATRHandle2 = iATR (Currency2, PERIOD_M1 , 1 );
ATRHandle3 = iATR (Currency3, PERIOD_M1 , 1 );
ATRHandle4 = iATR (Currency4, PERIOD_M1 , 1 );
 
Yedelkin :

Bundan mı bahsediyorsun?:

Hey,

Tabii ki değil.

Birkaç hindi varsa, her birinin yüzlerce kez kaç çift yemesi gerekir.

Bir tutamak, böylece tüm çiftler sürünür.

 
mario065 : Eğer birkaç hindi varsa, o zaman her birinin kaç çift yediğini defalarca yapması gerekir. Bir tutamak, böylece tüm çiftler sürünür.

Yani, iATR göstergesi farklı sembollerle çalışırken tek bir tutamağa sahip olmak mı istiyorsunuz?

iATR göstergesinin açıklamasından sadece tek bir sembolle çalışacak şekilde tasarlandığı görülüyor. Bu nedenle 4 sembolle çalışmak için iATR göstergesinin 4 kopyasını çalıştırmanız gerekecektir. Buna karşılık, belirli bir çalışan gösterge kopyasının değerlerine erişmek için tutamaç gereklidir . Ve göstergenin 4 kopyası çalışıyorsa, yine de ilgili tutamaçları bir yerde saklamanız gerekir.

Yalnızca bir tutamaç kullanma sorunu temel ise, iATR göstergesinin aynı anda birkaç sembolle çalışması, karşılık gelen sayıda değer dizisine sahip olması vb. için yeniden yazılması gerekecektir. O zaman bir tutamaç kullanmak mümkün olacak

handle = myATR( Currency1,Currency2,Currency3,Currency4, PERIOD_M1 , 1 );

ve myATR'den bir veya başka bir gösterge arabelleğine erişmek için kullanın.

 

Şu şekilde de yazılabilir (şematik olarak):

 string Currency[ 4 ] = { "GBPUSD" , "EURUSD" , "USDCHF" , "USDJPY" }; //могу ошибиться в части правильности записи присвоения значений, но проверить легко по Справочнику
int ATRHandle[ 4 ];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
    for ( int c= 0 ;c< 4 ;c++) SymbolSelect (Currency[с], true );
    for ( int c= 0 ;c< 4 ;c++) ATRHandle[с] = iATR (Currency[с], PERIOD_M1 , 1 );
    return ( 0 );
  }
Neden: