Kapanış pozisyonları. Göstergeye göre.
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.
İ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...?