tol64 : Söyleyin bana, bir pozisyon açarken / bekleyen bir emir verirken veya sonrasında zararı durdur / kârı hemen alma olasılığını programlı olarak belirlemek mümkün müdür?
Durdurma ve kar ayarlama düzeylerini önceden kontrol edin.
MarketInfo() işlevinde kullanılan istek tanımlayıcıları. Aşağıdaki değerlerden biri olabilir:
Devamlı
Anlam
Tanım
MODE_LOW
1
Minimum Günlük Fiyat
MODE_HIGH
2
Maksimum günlük fiyat
MODE_TIME
5
Son teklifin alınma zamanı
MODE_BID
dokuz
Son alınan teklif fiyatı. Mevcut araç için, önceden tanımlanmış Bid değişkeninde saklanır.
MODE_ASK
on
Son alınan satış fiyatı. Geçerli sembol için önceden tanımlanmış Ask değişkeninde saklanır.
MODE_POINT
on bir
Teklif para biriminde nokta boyutu. Mevcut takım için önceden tanımlanmış değişken Noktada saklanır
MODE_DIGITS
12
Enstrümanın fiyatındaki ondalık noktadan sonraki basamak sayısı. Mevcut enstrüman için önceden tanımlanmış değişken Basamaklarda saklanır
MODE_SPREAD
on üç
Puan olarak yayılma
MODE_STOPLEVEL
on dört
Pip cinsinden izin verilen minimum zararı durdur/kar al seviyesi
MODE_LOTSIZE
on beş
Araç temel para birimi cinsinden sözleşme boyutu
MODE_TICKVALUE
on altı
Mevduat para birimi cinsinden enstrümanın fiyatındaki minimum değişikliğin tutarı
MODE_TICKSIZE
17
Bir enstrümanın fiyatını karşıt para biriminde değiştirmek için minimum adım
MODE_SWAPLONG
on sekiz
Uzun pozisyonlar için takas boyutu
MODE_SWAPSHORT
on dokuz
Kısa pozisyonlar için takas boyutu
MODE_STARTING
20
Ticaretin takvim başlangıç tarihi (genellikle vadeli işlemler için kullanılır)
MODE_EXPIRATION
21
İşlemin takvim bitiş tarihi (genellikle vadeli işlemler için kullanılır)
MODE_TİCARETİZİN VERİLDİ
22
Belirtilen enstrüman üzerinde işlem yapma izni
MODE_MINLOT
23
Minimum parti büyüklüğü
MODE_LOTSTEP
24
Parti Büyüklüğü Adımı
MODE_MAXLOT
25
Maksimum parti büyüklüğü
MODE_SWAPTYPE
26
Takas hesaplama yöntemi. 0 - puan olarak; 1 - enstrümanın temel para biriminde; 2 - yüzde olarak; 3 - teminat para biriminde.
1 lot başına açık pozisyonları desteklemek için teminat miktarı
MODE_BARINDIRILMIŞ
31
1 lot başına kapalı pozisyonlardan alınan marj
MODE_MARGINGEREKLİ
32
Satın alma için 1 lot açmak için gereken ücretsiz fon miktarı
MODE_FREEZELEVEL
33
Donma seviyesini puan olarak sipariş edin. İşlem fiyatı donma seviyesinin belirlediği limitler içerisinde ise emir değiştirilemez, iptal edilemez veya kapatılamaz.
Herkese merhaba! Ben sadece Expert Advisors yazmayı öğreniyorum, sıradan standart göstergelerdeki ilk Expert Advisor'ların çoğu gibi, şimdi yazdım, şimdi görevimi karmaşıklaştırdım, ancak kodun nasıl görüneceğini bilmiyorum. Genel olarak, şartlar oluştuğunda, bir pozisyon açıldığında ve kapandığında, diyelim ki aynı koşulları korurken bir alım için yeni bir tane açılmayacak şekilde nasıl yapılır, ancak sadece zıt koşullar ortaya çıktığında açılır. , vb. Teşekkürler!!!
orada yardımda neredeyse hazır örnek hazır örnek
int i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotal;i++)
{
//---- seçim sonucunu kontrol et
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==yanlış)
{
Print("Geçmiş veritabanına erişim hatası (",GetLastError(),")");
kırmak;
}
siparişin kapanış saatini hatırlamanız gerekir
siparişin kapanış saatini önceki yinelemedeki kapanış saati ile karşılaştırın
if (kapanış süresi daha uzun ve ticaret türü al veya sat)
daha sonra mevcut siparişin zamanını ve ticaret işleminin türünü hatırlayın
// sonuç olarak, döngünün sonunda, en son kapatılan emrin türünü biliyoruz
}
Bunun gibi bir şey.
Durdurma ve kar ayarlama düzeylerini önceden kontrol edin.
Bu listede belirli hesap türleri için kontrol yoktur. NDD Hesapları için Ticaret Kurallarından bir paragraf:
3.3. Müşteri terminali aracılığıyla bir Uzman Danışman kullanılarak bir pozisyon açılırsa, Müşteri Zarar Durdurma ve/veya Kâr Alma Emirleri seviyelerini belirleyemez. Müşteri bu emirleri vermek isterse, 5.16 - 5.22 ve 9.13 - 9.16 maddeleri uyarınca mevcut bir pozisyonu değiştirerek bunu yapabilir.
Bunu programlı olarak kontrol etmenin mümkün olup olmadığını merak ediyorum. Anladığım kadarıyla, hayır. Programda, öncelikle brokerin belirlediği koşulları dikkate alarak pozisyon açma / bekleyen emir verme işlevini yazmanız gerekir.
Bu listede belirli hesap türleri için kontrol yoktur. NDD Hesapları için Ticaret Kurallarından bir paragraf:
Bunu programlı olarak kontrol etmenin mümkün olup olmadığını merak ediyorum. Anladığım kadarıyla, hayır. Programda, öncelikle brokerin belirlediği koşulları dikkate alarak pozisyon açma / bekleyen emir verme işlevini yazmanız gerekir.
Her nasılsa, sipariş verme kuralları tamamen açık değil, neyin mümkün olup neyin olmadığını demoda oynamayı deneyin. Anladığım kadarıyla, hiçbir şey programlı olarak bir emir vermenizi ve ardından onu değiştirmenizi engellemiyor.Bir pozisyon açtıktan sonra bağlantınızı kesip durmadan bırakmadığınız sürece, hak bir şekilde garip.
Bu listede belirli hesap türleri için kontrol yoktur. NDD Hesapları için Ticaret Kurallarından bir paragraf:
Bunu programlı olarak kontrol etmenin mümkün olup olmadığını merak ediyorum. Anladığım kadarıyla, hayır. Programda, öncelikle brokerin belirlediği koşulları dikkate alarak pozisyon açma / bekleyen emir verme işlevini yazmanız gerekir.
Sorun yok. Hatta (kişisel kullanım için olmasa bile, çünkü hangi hesaplarda (ticaret koşullarını ve kimden) kullanacağınızı kendiniz biliyorsunuz), ancak sipariş vermesi için bir danışman verirseniz ve müşterinin kendisi henüz hangi hesaplara ve nerede olacağına karar vermemişse aynı anda alma ve durdurma ayarlayabilme özelliğine sahip hesap türlerinde bile kullanın, daha sonra varsayılan olarak, her tür siparişi kurarken bu seviyelerin sıfır değerlerine sahip bir danışman yaparsınız, daha sonra bunların modifikasyonu ile (çalışacaktır) hem orada hem de orada), elbette, hiç kimse, belirli bir ofiste her türlü emir ve durdurma ve alım seviyelerinin ayarlanması ve daha sonra değiştirilmesi için herhangi bir seçenekle alım satım işlemleri yaparken kontrol gerekliliklerini ve kısıtlamalarını iptal etmedi.
Her nasılsa, sipariş verme kuralları tamamen açık değil, neyin mümkün olup neyin olmadığını demoda oynamayı deneyin. Anladığım kadarıyla, hiçbir şey programlı olarak bir emir vermenizi ve ardından onu değiştirmenizi engellemiyor.Bir pozisyon açtıktan sonra bağlantınızı kesip durmadan bırakmadığınız sürece, hak bir şekilde garip.
))) Değil. Beni hiç anlamadın. "Programlı kurulum" hakkında değil, programlı olarak belirleme hakkında yazdım. Bazı hesap türlerinde hemenbir pozisyon açamazsınız ve benim için tercih edilen / daha güvenli olan stoplar / alımlar belirleyemezsiniz. mql5'te yanılmıyorsam bunu belirlemek mümkün görünüyor. Bu anı tanımlayabilmek ve tanıma bağlı olarak hangi işlevi kullanacağımı seçebilmek istiyorum.
Sorun yok. Hatta (kişisel kullanım için olmasa bile, çünkü hangi hesaplarda (ticaret koşullarını ve kimden) kullanacağınızı kendiniz biliyorsunuz), ancak sipariş vermesi için bir danışman verirseniz ve müşterinin kendisi henüz hangi hesaplara ve nerede olacağına karar vermemişse aynı anda alma ve durdurma ayarlayabilme özelliğine sahip hesap türlerinde bile kullanın, daha sonra varsayılan olarak, her tür siparişi kurarken bu seviyelerin sıfır değerlerine sahip bir danışman yaparsınız, daha sonra bunların modifikasyonu ile (çalışacaktır) hem orada hem de orada), elbette, hiç kimse, belirli bir ofiste her türlü emir ve durdurma ve alım seviyelerinin ayarlanması ve daha sonra değiştirilmesi için herhangi bir seçenekle alım satım işlemleri yaparken kontrol gerekliliklerini ve kısıtlamalarını iptal etmedi.
Evet, bir çözüm olduğunda sorun yoktur. Sadece sahip olduklarınızı kullanmanız ve doğru kullanmanız gerekiyor.))
Roma.veivandurak cevapladığınız için çok TEŞEKKÜRLER, ancak benim için hala anlaşılması zor, bunun nasıl yapılacağına dair başka bir forumda bir öneri buldum, ancak henüz normal koduma uygulayamıyorum
int BuyTrue, SellTrue;// bize hizmet edecek değişkenleri yukarıdaki flaglar olarak tanımlıyoruz .... //--- Satın Alma Koşulu if (BuyTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu { .... SiparişGönder(....); // sipariş açma işlevi BuyTrue=1; // BuyTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır. // bu nedenle, tekrarlanan bir satın alma sinyali ile bir anlaşma açılmayacak SellTrue=0; // SellTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır // bu nedenle bir sonraki anlaşma sadece Satış olacak .... }
//--- Satış Şartı if (SellTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu { .... SiparişGönder(....); // sipariş açma işlevi SellTrue=1; // SellTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır. // bu nedenle, Sat'ta tekrarlanan bir sinyalle anlaşma açılmayacak BuyTrue=0; // BuyTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır // bu nedenle bir sonraki anlaşma sadece Satın Al olacaktır. .... }
Ticaret açılış kodum
toplam=SiparişToplam(); if(toplam<1) { // açık sipariş tanımlanmadı if(AccountFreeMargin()<(1000*Lots)) { Print("Paramız yok. Serbest Marj = ", AccountFreeMargin()); dönüş(0); } // uzun pozisyon (SATIN AL) olasılığını kontrol edin if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point)) { bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Yeşil); if(bilet>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice()); } else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError()); dönüş(0); } // kısa pozisyon (SAT) olasılığını kontrol et if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point)) { bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Kırmızı); if(bilet>0) { if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print("SAT emri açıldı : ",OrderOpenPrice()); } else Print("SATIŞ emrini açarken hata: ",GetLastError()); dönüş(0); } dönüş(0); }
Roma.veivandurak Cevapladığınız için çok TEŞEKKÜRLER, ancak benim için hala anlaşılması zor, başka bir forumda bunun nasıl yapılacağına dair bir öneri buldum, ancak henüz normal koduma uygulayamıyorum
int BuyTrue, SellTrue;// bize hizmet edecek değişkenleri yukarıdaki flaglar olarak tanımlıyoruz .... //--- Satın Alma Koşulu if (BuyTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu { .... SiparişGönder(....); // sipariş açma işlevi BuyTrue=1; // BuyTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır. // bu nedenle, tekrarlanan bir satın alma sinyali ile anlaşma açılmayacak SellTrue=0; // SellTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır // bu nedenle bir sonraki anlaşma sadece Satış olacak .... }
//--- Satış Şartı if (SellTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu { .... SiparişGönder(....); // sipariş açma işlevi SellTrue=1; // SellTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır. // bu nedenle, Sat'ta tekrarlanan bir sinyalle anlaşma açılmayacak BuyTrue=0; // BuyTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır // bu nedenle bir sonraki anlaşma sadece Satın Al olacaktır. .... }
Ticaret açılış kodum
toplam=SiparişToplam(); if(toplam<1) { // açık sipariş tanımlanmadı if(AccountFreeMargin()<(1000*Lots)) { Print("Paramız yok. Serbest Marj = ", AccountFreeMargin()); dönüş(0); } // uzun pozisyon (SATIN AL) olasılığını kontrol edin if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point)) { bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Yeşil); if(bilet>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice()); } else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError()); dönüş(0); } // kısa pozisyon (SAT) olasılığını kontrol et if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point)) { bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Kırmızı); if(bilet>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SAT emri açıldı : ",OrderOpenPrice()); } else Print("SATIŞ emrini açarken hata: ",GetLastError()); dönüş(0); } dönüş(0); }
İlk olarak, kodunuzu Ctrl+Alt+M ile düzenleyiciye yapıştırın (veya menünün üst kısmından SRC'ye basın), aksi takdirde bu kötü, bu anlaşılabilir - her şey birleşir... :-)))
İkincisi, ders kitabını, özellikle size önerilen bağlantıdaki bilgileri okuyun, kodun altında bunun bir açıklaması var ve açıklamanın en sonunda sadece boyanmış - yukarıda / aşağıda bir fiyat nasıl rapor edilir MA bir kez (bu ticaret koşulu için bir kerelik girişle bir analojiniz olacak - bayrakların kullanımı ve tümü), MAGIC'inizi OLUŞTURMADAN önce ... :-)))
not veya bir Google aramasında şunu yazın: site:mql4.com kodu nasıl doğru şekilde eklenir
Söyleyin bana, bir pozisyon açarken / bekleyen bir emir verirken veya sonrasında zararı durdur / kârı hemen alma olasılığını programlı olarak belirlemek mümkün müdür?
Durdurma ve kar ayarlama düzeylerini önceden kontrol edin.
MarketInfo() işlevinde kullanılan istek tanımlayıcıları. Aşağıdaki değerlerden biri olabilir:
Herkese merhaba! Ben sadece Expert Advisors yazmayı öğreniyorum, sıradan standart göstergelerdeki ilk Expert Advisor'ların çoğu gibi, şimdi yazdım, şimdi görevimi karmaşıklaştırdım, ancak kodun nasıl görüneceğini bilmiyorum. Genel olarak, şartlar oluştuğunda, bir pozisyon açıldığında ve kapandığında, diyelim ki aynı koşulları korurken bir alım için yeni bir tane açılmayacak şekilde nasıl yapılır, ancak sadece zıt koşullar ortaya çıktığında açılır. , vb. Teşekkürler!!!
orada yardımda neredeyse hazır örnek hazır örnek
int i,accTotal=OrdersHistoryTotal(); for(i=0;i<accTotal;i++) { //---- seçim sonucunu kontrol et if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==yanlış) { Print("Geçmiş veritabanına erişim hatası (",GetLastError(),")"); kırmak; } siparişin kapanış saatini hatırlamanız gerekir siparişin kapanış saatini önceki yinelemedeki kapanış saati ile karşılaştırın if (kapanış süresi daha uzun ve ticaret türü al veya sat) daha sonra mevcut siparişin zamanını ve ticaret işleminin türünü hatırlayın // sonuç olarak, döngünün sonunda, en son kapatılan emrin türünü biliyoruz } Bunun gibi bir şey.Durdurma ve kar ayarlama düzeylerini önceden kontrol edin.
Bu listede belirli hesap türleri için kontrol yoktur. NDD Hesapları için Ticaret Kurallarından bir paragraf:
3.3. Müşteri terminali aracılığıyla bir Uzman Danışman kullanılarak bir pozisyon açılırsa, Müşteri Zarar Durdurma ve/veya Kâr Alma Emirleri seviyelerini belirleyemez. Müşteri bu emirleri vermek isterse, 5.16 - 5.22 ve 9.13 - 9.16 maddeleri uyarınca mevcut bir pozisyonu değiştirerek bunu yapabilir.
Bunu programlı olarak kontrol etmenin mümkün olup olmadığını merak ediyorum. Anladığım kadarıyla, hayır. Programda, öncelikle brokerin belirlediği koşulları dikkate alarak pozisyon açma / bekleyen emir verme işlevini yazmanız gerekir.Bu listede belirli hesap türleri için kontrol yoktur. NDD Hesapları için Ticaret Kurallarından bir paragraf:
Her nasılsa, sipariş verme kuralları tamamen açık değil, neyin mümkün olup neyin olmadığını demoda oynamayı deneyin. Anladığım kadarıyla, hiçbir şey programlı olarak bir emir vermenizi ve ardından onu değiştirmenizi engellemiyor.Bir pozisyon açtıktan sonra bağlantınızı kesip durmadan bırakmadığınız sürece, hak bir şekilde garip.
Bunu programlı olarak kontrol etmenin mümkün olup olmadığını merak ediyorum. Anladığım kadarıyla, hayır. Programda, öncelikle brokerin belirlediği koşulları dikkate alarak pozisyon açma / bekleyen emir verme işlevini yazmanız gerekir.Bu listede belirli hesap türleri için kontrol yoktur. NDD Hesapları için Ticaret Kurallarından bir paragraf:
Sorun yok. Hatta (kişisel kullanım için olmasa bile, çünkü hangi hesaplarda (ticaret koşullarını ve kimden) kullanacağınızı kendiniz biliyorsunuz), ancak sipariş vermesi için bir danışman verirseniz ve müşterinin kendisi henüz hangi hesaplara ve nerede olacağına karar vermemişse aynı anda alma ve durdurma ayarlayabilme özelliğine sahip hesap türlerinde bile kullanın, daha sonra varsayılan olarak, her tür siparişi kurarken bu seviyelerin sıfır değerlerine sahip bir danışman yaparsınız, daha sonra bunların modifikasyonu ile (çalışacaktır) hem orada hem de orada), elbette, hiç kimse, belirli bir ofiste her türlü emir ve durdurma ve alım seviyelerinin ayarlanması ve daha sonra değiştirilmesi için herhangi bir seçenekle alım satım işlemleri yaparken kontrol gerekliliklerini ve kısıtlamalarını iptal etmedi.
Her nasılsa, sipariş verme kuralları tamamen açık değil, neyin mümkün olup neyin olmadığını demoda oynamayı deneyin. Anladığım kadarıyla, hiçbir şey programlı olarak bir emir vermenizi ve ardından onu değiştirmenizi engellemiyor.Bir pozisyon açtıktan sonra bağlantınızı kesip durmadan bırakmadığınız sürece, hak bir şekilde garip.
))) Değil. Beni hiç anlamadın. "Programlı kurulum" hakkında değil, programlı olarak belirleme hakkında yazdım. Bazı hesap türlerinde hemen bir pozisyon açamazsınız ve benim için tercih edilen / daha güvenli olan stoplar / alımlar belirleyemezsiniz. mql5'te yanılmıyorsam bunu belirlemek mümkün görünüyor. Bu anı tanımlayabilmek ve tanıma bağlı olarak hangi işlevi kullanacağımı seçebilmek istiyorum.
Sorun yok. Hatta (kişisel kullanım için olmasa bile, çünkü hangi hesaplarda (ticaret koşullarını ve kimden) kullanacağınızı kendiniz biliyorsunuz), ancak sipariş vermesi için bir danışman verirseniz ve müşterinin kendisi henüz hangi hesaplara ve nerede olacağına karar vermemişse aynı anda alma ve durdurma ayarlayabilme özelliğine sahip hesap türlerinde bile kullanın, daha sonra varsayılan olarak, her tür siparişi kurarken bu seviyelerin sıfır değerlerine sahip bir danışman yaparsınız, daha sonra bunların modifikasyonu ile (çalışacaktır) hem orada hem de orada), elbette, hiç kimse, belirli bir ofiste her türlü emir ve durdurma ve alım seviyelerinin ayarlanması ve daha sonra değiştirilmesi için herhangi bir seçenekle alım satım işlemleri yaparken kontrol gerekliliklerini ve kısıtlamalarını iptal etmedi.
Evet, bir çözüm olduğunda sorun yoktur. Sadece sahip olduklarınızı kullanmanız ve doğru kullanmanız gerekiyor.))
Roma. ve ivandurak cevapladığınız için çok TEŞEKKÜRLER, ancak benim için hala anlaşılması zor, bunun nasıl yapılacağına dair başka bir forumda bir öneri buldum, ancak henüz normal koduma uygulayamıyorum
int BuyTrue, SellTrue;// bize hizmet edecek değişkenleri yukarıdaki flaglar olarak tanımlıyoruz
....
//--- Satın Alma Koşulu
if (BuyTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu
{
....
SiparişGönder(....); // sipariş açma işlevi
BuyTrue=1; // BuyTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır.
// bu nedenle, tekrarlanan bir satın alma sinyali ile bir anlaşma açılmayacak
SellTrue=0; // SellTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır
// bu nedenle bir sonraki anlaşma sadece Satış olacak
....
}
//--- Satış Şartı
if (SellTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu
{
....
SiparişGönder(....); // sipariş açma işlevi
SellTrue=1; // SellTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır.
// bu nedenle, Sat'ta tekrarlanan bir sinyalle anlaşma açılmayacak
BuyTrue=0; // BuyTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır
// bu nedenle bir sonraki anlaşma sadece Satın Al olacaktır.
....
}
Ticaret açılış kodum
toplam=SiparişToplam();
if(toplam<1)
{
// açık sipariş tanımlanmadı
if(AccountFreeMargin()<(1000*Lots))
{
Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());
dönüş(0);
}
// uzun pozisyon (SATIN AL) olasılığını kontrol edin
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
// kısa pozisyon (SAT) olasılığını kontrol et
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print("SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
Roma. ve ivandurak Cevapladığınız için çok TEŞEKKÜRLER, ancak benim için hala anlaşılması zor, başka bir forumda bunun nasıl yapılacağına dair bir öneri buldum, ancak henüz normal koduma uygulayamıyorum
int BuyTrue, SellTrue;// bize hizmet edecek değişkenleri yukarıdaki flaglar olarak tanımlıyoruz
....
//--- Satın Alma Koşulu
if (BuyTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu
{
....
SiparişGönder(....); // sipariş açma işlevi
BuyTrue=1; // BuyTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır.
// bu nedenle, tekrarlanan bir satın alma sinyali ile anlaşma açılmayacak
SellTrue=0; // SellTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır
// bu nedenle bir sonraki anlaşma sadece Satış olacak
....
}
//--- Satış Şartı
if (SellTrue==0 && ... ve artı diğer koşullarınız) // Poz açma koşulu
{
....
SiparişGönder(....); // sipariş açma işlevi
SellTrue=1; // SellTrue=1 ise, bir poz açma koşulu tam olarak karşılanmayacaktır.
// bu nedenle, Sat'ta tekrarlanan bir sinyalle anlaşma açılmayacak
BuyTrue=0; // BuyTrue=0 ise, bir poz açma koşulu tamamen karşılanacaktır
// bu nedenle bir sonraki anlaşma sadece Satın Al olacaktır.
....
}
Ticaret açılış kodum
toplam=SiparişToplam();
if(toplam<1)
{
// açık sipariş tanımlanmadı
if(AccountFreeMargin()<(1000*Lots))
{
Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());
dönüş(0);
}
// uzun pozisyon (SATIN AL) olasılığını kontrol edin
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
// kısa pozisyon (SAT) olasılığını kontrol et
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
İlk olarak, kodunuzu Ctrl+Alt+M ile düzenleyiciye yapıştırın (veya menünün üst kısmından SRC'ye basın), aksi takdirde bu kötü, bu anlaşılabilir - her şey birleşir... :-)))
İkincisi, ders kitabını, özellikle size önerilen bağlantıdaki bilgileri okuyun, kodun altında bunun bir açıklaması var ve açıklamanın en sonunda sadece boyanmış - yukarıda / aşağıda bir fiyat nasıl rapor edilir MA bir kez (bu ticaret koşulu için bir kerelik girişle bir analojiniz olacak - bayrakların kullanımı ve tümü), MAGIC'inizi OLUŞTURMADAN önce ... :-)))
not veya bir Google aramasında şunu yazın: site:mql4.com kodu nasıl doğru şekilde eklenir