
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
SL ve TP olmadan çalışmak sorun değil.
Ancak yine de kâr durumunda siparişi kapatmak için koşula ihtiyacımız var.
Lütfen yenilenen "iSignalClose" işlevine bir göz atın, https://www.mql5.com/en/forum/124521/page2 .
Şimdi, elbette, sanal SL'nin durumu.
Ama yine de sanal TP koşuluna ihtiyacımız var.
Cevabını bekliyorum.
:)
Merhaba AyşeVay bu harika bir iş. Teşekkür ederim.
Üzgünüm, ayrılmak zorunda kaldım. Pazar günüydü ve gölde aile zamanı ve ardından akşam yemeği.
Yaptığınız tüm çalışmaları görmek için programı birkaç dakika önce açtım.
Sana nasıl yeterince teşekkür edebilirim? Alışmam biraz zaman alabilir.
TP'nin tartışılmadığı fikri, bunu bir araya getiriyor olmamdı.
bir seferde ifade veya işlev. Bir programın nasıl oluşturulacağını yavaşça anlamak.
Bu konudaki yaklaşımınız programı kısaltır ve profesyoneldir. Paylaşım için teşekkürler .
TP ve SL biraz daha karmaşık olacak. Dediğim gibi bunu yavaş yavaş öğreniyorum.
Daha sonra hangi işlevin yapılması gerektiğinden emin değil. İzin verirseniz, size büyük resmi anlatacağım.
1. Bu programla daha fazla pozisyon eklemek istiyordum. İlk konum gibi.
Zaten programda olan ve ardından 2, 3, 4 ve 5. konum.
Not: 5'ten fazla pozisyonla geriye dönük test yapılmamıştır.
2. Yeni konumlarda, SL'nin her biri ile ayarlanması gerekecektir. SL vurulduğunda, tüm pozisyonlar
tasfiye edilir.
3. Her ek pozisyon, bir öncekinden 1/2 ATR olacaktır. Bir Satın Alma, 1/2 ATR daha fazla olacaktır,
Satış olarak 1/2 ATR daha düşük olacaktır.
4. SL, her bir ilave pozisyon ile adım adım 1/2 ATR ile ayarlanacaktır.
Not: İyi bir trendde olduğunuz bir zaman gelir ve fiyat 1/2 ATR'yi geçer.
Ve daha fazla pozisyon istemeyin. Bu trend içinde, fiyatın son on çubuğun en düşük seviyesinin son SL'den daha yüksek olacağı bir noktaya ulaşacağı bir zaman vardır. Bu durumda, SL, son 10 çubuğun en düşük seviyesi ile ayarlanır. Ve grafikten bir düşük kaydırıldıktan sonra buna göre ayarlanır. Gördüğünüz gibi, SL takip eden bir durak değil. Ancak ATR*2 ile ayarlanır, ardından son on günün en düşük seviyesi ile ayarlanır. (Bahsedilen durum bir Al koşuluydu. Bir Sat koşulu ise tam tersi).
Elle test ettiğim sistem bu.
Kodlarla veya bir TP ile geriye dönük test yapma lüksüne sahip olmadım. Belki ilerde bakabilirim
fiyat kalıpları. Ama şimdilik, kârın çalışmasına izin verdim ve birçok küçük kayıp aldım.
Bana sofistike olmaya çalışmamam gerektiği söylendi. Küçük programlarda öğrenmem gerektiğini
ve onlardan inşa edin. Bu yüzden sadece bunu yapmaya çalışıyorum. Sanırım bir sonraki adım öğrenmek olacak
ek pozisyonlarda nasıl dönülür. Ardından SL'yi nasıl ayarlayacağınızı öğrenin.
Para yönetimi sonuna kadar ertelenebilir. Ama çok önemli. Yanlış yöne gittiğimi düşünüyorsanız, teşekkür ederim.
herhangi bir girdi.
Yapılan çalışmaların ek adımlar tarafından engellenmeyeceğini umuyorum.
Sadece önce hangi adımın atılması gerektiğini veya neyin izlenmesi gerektiğini bilmiyordum.
Her şey için teşekkürler.
Geliştirmelerine hayranım. Geri döneceğim, eminim daha fazla soruyla. Verdiklerinle öğreneceğin çok şey var.
Şerefe
Merhaba Huckleberry,
En iyisi teşekkürler:
"
Merhaba Ayşe
Vay bu harika bir iş. Teşekkür ederim.
"
Gerçekten ve gerçekten.
Şimdi hesaplamaları iyileştireceğim.
Aynen, ATR'yi yalnızca yeni çubukta hesaplamak istiyorum.
Daha hızlı test etmeye ve optimize etmeye izin verir.
Ve asıl amacım, programı kolayca değiştirebilmenizdi.
Hatta programı genişletip yeni özellikler ekleyeceksiniz.
Özellikle karmaşıklığı azaltmak için yapılan yapı.
Aynı yapıyı yakın gelecekte büyük programlar için kullanacağım.
Ticaret stratejisine gelince, onu sadece kısa bir süre inceledim.
Pek çok stratejinin işe yarayabileceğinden ve çalışması gerektiğinden eminim.
En iyi anlamak için yapıyı incelemenize yardımcı olmak isterim.
Şimdilik saygılar ve hoşçakalın
PS Gelecekte sadece sanal çekimler ve duraklar ile çalışacağım.
////////////////////////////////////////////////////////////////////< 1> // < Program : Property > //< > // #define 1 " " //< > // #define 2 " " //< > // </Program : Property > //< > // //< > // < Program : Content > //< > // //< > // < Structure 16 elements in 4 domains > //< > // < 1. Data 7 elements in 2 domains /> //< > // < 2. Code 9 elements in 2 domains /> //< > // </Structure 16 elements in 4 domains > //< > // //< > // < 1. Data 7 = 4 i 3 d - s > //< > // < 1.1. Input 7 = 4 i 3 d - s /> //< > // < 1.2. Buffer - = - i - d - s /> //< > // </1. Data 7 = 4 i 3 d - s > //< > // //< > // < 2. Code 9 / - i 82 l 4 o > //< > // < 2.1. Interface 6 / - i 71 l 4 o /> //< > // < 2.2. Special 3 / - i 11 l - o /> //< > // </2. Code 9 / - i 82 l 4 o > //< > // //< > // </Program : Content > //< >
////////////////////////////////////////////////////////////////////< 2> // < 1.1. Data : Input > //< > // //< > // < 1.1. Input 7 = 4 i 3 d - s > //< > // < 1. Strategy 4 = 2 i 2 d - s /> //< > // < 2. Trading 3 = 2 i 1 d - s /> //< > // </1.1. Input 7 = 4 i 3 d - s > //< > // //< > // < 1. Strategy 4 >=========================================//< > int iBaseLag = 20 ; //< > int iBaseBar = 1 ; //< > double dFactorTP = 2.0 ; //< > double dFactorSL = 2.0 ; //< > // </ 1. Strategy 4 >=========================================//< > // //< > // < 2. Trading 3 >==========================================//< > int iSlippage = 1 ; //< > int iMagic = 1 ; //< > double dLots = 0.1 ; //< > // </ 2. Trading 3 >==========================================//< > // //< > // //< > // //< > // </1.1. Data : Input > //< >
////////////////////////////////////////////////////////////////////< 3> // < 1.2. Data : Buffer > //< > // //< > // < 1.2. Buffer - = - i - d - s > //< > // </1.2. Buffer - = - i - d - s > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </1.2. Data : Buffer > //< >
////////////////////////////////////////////////////////////////////< 4> // < 2.1. Code : Interface > //< > // //< > // < 2.1. Interface 6 / - i 71 l 4 o > //< > // < 1. iNewBar - i 4 l 1 o /> //< > // < 2. iSignalOpen - i 15 l 1 o /> //< > // < 3. iSignalClose - i 15 l 1 o /> //< > // < 4. iGetTicket - i 7 l 1 o /> //< > // < 5. iTryOpen - i 15 l - o /> //< > // < 6. iTryClose - i 15 l - o /> //< > // </2.1. Interface 6 / - i 71 l 4 o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.1. Code : Interface > //< >
////////////////////////////////////////////////////////////////////< 5> // < 2.1.1. Code : Interface : iNewBar > //< > int iNewBar () // - i 4 l 1 o //< > { //< > static int iTime_0 = 0 ; //< > // //< > if ( iTime_0 < iTime ( 0 , 0 , 0 ) ) //< > { iTime_0 = iTime ( 0 , 0 , 0 ) ; return ( TRUE ) ; } //< > else { return ( EMPTY ) ; } //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.1. Code : Interface : iNewBar > //< >
////////////////////////////////////////////////////////////////////< 6> // < 2.1.2. Code : Interface : iSignalOpen > //< > int iSignalOpen () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > int iIndexH = iHighest ( 0 , 0 , MODE_HIGH , //< > iBaseLag , iBaseBar ) ; //< > int iIndexL = iLowest ( 0 , 0 , MODE_LOW , //< > iBaseLag , iBaseBar ) ; //< > static double dHigh ; dHigh = High [ iIndexH ] ; //< > static double dLow ; dLow = Low [ iIndexL ] ; //< > } // if //< > // //< > double dAsk = MarketInfo ( Symbol () , MODE_ASK ) ; //< > if ( dAsk > dHigh ) return ( OP_BUY ) ; //< > // //< > double dBid = MarketInfo ( Symbol () , MODE_BID ) ; //< > if ( dBid < dLow ) return ( OP_SELL ) ; //< > // //< > return ( EMPTY ) ; //< > } //< > // </2.1.2. Code : Interface : iSignalOpen > //< >
////////////////////////////////////////////////////////////////////< 7> // < 2.1.3. Code : Interface : iSignalClose > //< > int iSignalClose () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > static double dATR , dProfit , dLoss ; //< > dATR = iATR ( 0 , 0 , iBaseLag , iBaseBar ) ; //< > } // if //< > // //< > double dDelta = OrderOpenPrice () - OrderClosePrice () ; //< > // //< > if ( OrderType () == OP_BUY ) //< > { dProfit = -dDelta ; dLoss = dDelta ; } //< > else if ( OrderType () == OP_SELL ) //< > { dProfit = dDelta ; dLoss = -dDelta ; } //< > else return ( EMPTY ) ; //< > // //< > if ( dProfit > dATR * dFactorTP ) return ( TRUE ) ; //< > if ( dLoss > dATR * dFactorSL ) return ( TRUE ) ; //< > return ( EMPTY ) ; //< > } //< > // </2.1.3. Code : Interface : iSignalClose > //< >
////////////////////////////////////////////////////////////////////< 8> // < 2.1.4. Code : Interface : iGetTicket > //< > int iGetTicket () // - i 7 l 1 o //< > { //< > for ( int i = OrdersTotal () - 1 ; i >= 0 ; i -- ) //< > { //< > if ( OrderSelect ( i , SELECT_BY_POS ) == TRUE ) //< > if ( OrderMagicNumber () == iMagic ) //< > return ( OrderTicket () ) ; //< > } // for //< > return ( EMPTY ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.4. Code : Interface : iGetTicket > //< >
////////////////////////////////////////////////////////////////////< 9> // < 2.1.5. Code : Interface : iTryOpen > //< > int iTryOpen () // - i 15 l - o //< > { //< > int iCommand = iSignalOpen () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( iCommand == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Blue ; } //< > else { sType = "Sell" ; iColor = Red ; } //< > // //< > if ( iCommand == OP_BUY ) int iMode = MODE_ASK ; //< > else iMode = MODE_BID ; //< > double dPrice = MarketInfo ( Symbol () , iMode ) ; //< > // //< > OrderSend ( Symbol () , iCommand , dLots , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , 0 , 0 , "" , iMagic , 0 , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " Was a Big Success" ) ; //< > else Alert ( sType , " open exception " , iTrap ) ; //< > } //< > // </2.1.5. Code : Interface : iTryOpen > //< >
////////////////////////////////////////////////////////////////////< 10> // < 2.1.6. Code : Interface : iTryClose > //< > int iTryClose () // - i 15 l - o //< > { //< > int iCommand = iSignalClose () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( OrderType () == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Red ; } //< > else { sType = "Sell" ; iColor = Blue ; } //< > // //< > if ( OrderProfit () > 0 ) string sAct = "Take" ; //< > else sAct = "Stop" ; //< > double dPrice = OrderClosePrice () ; //< > // //< > OrderClose ( OrderTicket () , OrderLots () , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " closed with Hard " , sAct ) ; //< > else Alert ( sType , " close exception " , iTrap ) ; //< > } //< > // </2.1.6. Code : Interface : iTryClose > //< >
////////////////////////////////////////////////////////////////////< 11> // < 2.2. Code : Special > //< > // //< > // < 2.2. Special 3 / - i 11 l - o > //< > // < 1. init - i 1 l - o /> //< > // < 2. deinit - i 1 l - o /> //< > // < 3. start - i 9 l - o /> //< > // </2.2. Special 3 / - i 11 l - o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.2. Code : Special > //< >
////////////////////////////////////////////////////////////////////< 12> // < 2.2.1. Code : Special : Init > //< > int init () // - i 1 l - o //< > { //< > Alert ( "" , "Start " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.1. Code : Special : Init > //< >
////////////////////////////////////////////////////////////////////< 13> // < 2.2.2. Code : Special : Deinit > //< > int deinit () // - i 1 l - o //< > { //< > Alert ( "" , "Stop " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.2. Code : Special : Deinit > //< >
////////////////////////////////////////////////////////////////////< 14> // < 2.2.3. Code : Special : Start > //< > int start () // - i 9 l - o //< > { //< > // < 2.2.3.1. History data inspection 4 >`````````````````````````//< > static int iTrigger = 0 ; if ( iTrigger == 0 ) { //< > if ( ( iTime ( 0 , 0 , 0 ) == 0 ) //< > || ( iBars ( 0 , 0 ) < iBaseLag + iBaseBar ) ) //< > return ; else iTrigger = 1 ; } //< > // </2.2.3.1. History data inspection 4 >`````````````````````````//< > // //< > // < 2.2.3.2. Main routine 3 >````````````````````````````````````//< > int iTicket = iGetTicket () ; //< > // //< > if ( iTicket < 0 ) iTryOpen () ; //< > else iTryClose () ; //< > // </2.2.3.2. Main routine 3 >````````````````````````````````````//< > // //< > // < 2.2.3.3. Exception handler 2 >```````````````````````````````//< > int iTrap = GetLastError () ; //< > if ( iTrap > 0 ) Alert ( "Exception " , iTrap ) ; //< > // </2.2.3.3. Exception handler 2 >```````````````````````````````//< > } //< > // </2.2.3. Code : Special : Start > //< > ////////////////////////////////////////////////////////////////////< 0>
Adjust MetaEditor window to see 25 lines x 80 columns. Use <Page Up> and <Page Down> to scroll the content. Last edit: 2010.03.16 18:44 State: Ready