Genellikle böyle bir şey uygularım:
//+----------------------------------------------------------------------------+ //| Управление позициями | //+----------------------------------------------------------------------------+ void ManagePositions () { double sl = 0 , tp = 0 ; int ms [ 2 ] ; ArrayInitialize ( ms , 0 ) ; GetTradeSignal ( ms ) ; if ( ExistPositions ( "" , - 1 , Magic )) { if ( ms [ 1 ] > 0 ) ClosePositions ( "" , OP_BUY , Magic ) ; if ( ms [ 1 ] < 0 ) ClosePositions ( "" , OP_SELL , Magic ) ; } else { if ( ms [ 0 ] > 0 ) { if ( StopLoss > 0 ) sl = Ask - StopLoss * Point ; else sl = 0 ; if ( TakeProfit > 0 ) tp = Ask + TakeProfit * Point ; else tp = 0 ; OpenPosition ( OP_BUY , sl , tp , Magic ) ; } if ( ms [ 0 ] < 0 ) { if ( StopLoss > 0 ) sl = Bid + StopLoss * Point ; else sl = 0 ; if ( TakeProfit > 0 ) tp = Bid - TakeProfit * Point ; else tp = 0 ; OpenPosition ( OP_SELL , sl , tp , Magic ) ; } } }Gördüğünüz gibi, oldukça spesifik eylemler gerçekleştiren işlevler yazılmıştır. Daha sonra bu işlevler, pozisyonlarla çalışmak için istenen taktikleri uygulayacak şekilde birleştirilir.
muhtemelen Stochast_1, Stochast_0 ile ilgili bir şey, diğer her şey yolunda
Hayır..... Stokastik ile - her şey yolunda. ( açılış fiyatlarında çalışmak)
double Stochast_0 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 0 ) ; double Stochast_1 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 1 ) ;
Seni doğru anladım mı? Bai pozisyonu kapatılmalı
OrderClose (OrderTicket(),OrderLots(),Bid,3,Yeşil);
Ve Satış pozisyonu kapatılmalıdır:
OrderClose(OrderTicket(),OrderLots(),Ask,3,Yeşil); ?Seni doğru anladım mı?
Genel olarak doğru.
Yine de, stokastiklere göre pozisyonları kapatmak istemiyorlar! Hepsini çalıştırdı! Harici parametrelere bir anahtar ekledim. Kodun sonunda - pozisyonları kapatmak için ayrı bir blok! Kapatma yeşil bir üçgen tarafından sağlandı.
Taktik basittir - hızlı MA, yavaş MA tarafından oluşturulan kanalın sınırlarını yukarı ve aşağı sapma ile geçer. Kod basit. Danışman İndirmede - aşağıda.
хотел выложить весь код - не принимет сервер! - пишет больше допустимого//********* Закрытие позиций **************************************** if ( AutoClose ) { //----переменные для закрытия позиций ---- double Stochast_0 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 0 ) ; double Stochast_1 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 1 ) ; //---------------------------------------------------------------------- for ( int v = 0 ; v < OrdersTotal () ; v ++ ) { if ( OrderSelect ( v , SELECT_BY_POS , MODE_TRADES )) { if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNum ) { //----------------------------------------------------- if ( OrderType () == OP_BUY ) { if ( Stochast_1 > 75 && Stochast_0 < 75 ) { OrderClose ( OrderTicket () , OrderLots () , Bid , 3 , Green ) ; // закрываем позицию return ( 0 ) ; // выходим } } //-------------------------------------------------------- if ( OrderType () == OP_SELL ) { if ( Stochast_1 < 25 && Stochast_0 > 25 ) { OrderClose ( OrderTicket () , OrderLots () , Ask , 3 , Green ) ; // закрываем позицию return ( 0 ) ; // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total } //Close_
Yapabilir. kim bakacak? Ve bana neler olduğunu söyle...
Belki de emirleri açarken büyükler ve talepler yanlış yerleştirilmişti? Her zaman bununla karıştırılır:
bilet= SiparişGönder (Symbol(),... ....Ama bir şeyi kesin olarak düzeltirdim: "if(Stochast_1>75 && Stochast_0<75)" yerine "if(Stochast_1>75 && Stochast_0 <= 75)" yapardım.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
İyi akşamlar! Bir problem vardı.
Pozisyonu kapatmam gerekiyor. Göstergeye göre. Ayrıca. Pozisyonun zarar durdur veya kar al ile de kapatılabilmesi gerekir. (Gösterge sinyalinin çok geç olması durumunda. - Sıklıkla olur) Pozisyonları açarım:
Gelecekte, açık pozisyonları kapatmak için şunları sağlarım:
Ancak, pozisyonlar hala sadece zararı durdur veya kârı al ile kapatılır. (çok nadir - tek bir istisna ile!)
Grafikteki gösterge, neredeyse tüm açık pozisyonların tam olarak göstergenin sinyalinde kapatılması gerektiğini gösterse de. Lütfen. hata nerede olabilir söyler misiniz...?