İngilizce olmayan herhangi birinin hikayenizi anlayabileceğini düşünüyor musunuz? Koyunları ve çobanları anlıyorum Bay John, ama hikaye bana hiç mantıklı gelmiyor. (Belki benim... o yüzden üzgünüm)
Ticaret/mql4 için genel tanımları kullanarak sorununuzu biraz 'uluslararası İngilizce' ile açıklayabilir misiniz?
Bu cümle ne anlama geliyor?
LÜTFEN KONU YAZMAYIN bu iyi bir el kitabı olsun
İngilizce olmayan herhangi birinin hikayenizi anlayabileceğini düşünüyor musunuz? Koyunları ve çobanları anlıyorum Bay John, ama hikaye bana hiç mantıklı gelmiyor. (Belki benim... o yüzden üzgünüm)
Ticaret/mql4 için genel tanımları kullanarak sorununuzu biraz 'uluslararası İngilizce' ile açıklayabilir misiniz?
Bu cümle ne anlama geliyor?
SADECE MUM - Pozisyon nasıl açılır? - sıradaki konu olmalı. Moderatör Sen ne düşünüyorsun? yapabilirmiyim?
Seçilen senaryoyu uyguluyoruz
Sipariş nasıl gönderilir?
int start() // start program { // We have some function here like "int CalculateCurrentOrders(string symbol)" and "double LotsOptimized()" // many different thing, suddenly! we have our "CheckOpen();" //-------------------------------- void CheckOpen() // void - because function return nothing { // start body int res; // we will use changeable "res" this is "int" value if ( Bid==Close[ 1 ]+ 4 * Point ) // check conditions: Bid or Ask must be 4 Point above a BAR if no - nothing happen if Yes go below { // start body if res= OrderSend ( Symbol (),OP_SELL, 0.02 ,Bid, 0 ,Open[ 1 ]+ 37 * Point , 0 , "" ,MAGICMA, 0 ,Red); // start "res" and "res" is sending message to platform to open position // what position is in "()" allways must be the same sequence symbol , op_*** , lot size , ...) return ; // if "res" do it then retunrn too ... y ... "if". Because "if" is done return too CheckOpen(). Because "CheckOpen()" is done stop and end. } // stop body if } // stop body function "void CheckOpen()" //--------------------------------
bir siparişimiz var
Ama bir fonksiyonda iki pozisyon açmak için ne yapmalıyım?
Bu senaryoda CheckForOpenS1() senaryomuz var. Fiyatımız doğru yerdeyse iki kez satın alıyoruz tabii ki
//-------------------------------- void CheckOpen1() // define first function { int res; if ( Bid==Close[ 1 ]+ 4 * Point ) { res= OrderSend ( Symbol (),OP_SELL, 0.02 ,Bid, 0 , 0 , 0 , "" ,MAGICMA, 0 ,Red); return ; } } void CheckOpen2() // define second function { int res; if ( Bid==Close[ 1 ]+ 8 * Point ) // change 8 Point ( 4 ==> 8 ) { res= OrderSend ( Symbol (),OP_SELL, 0.02 ,Bid, 0 , 0 , 0 , "" ,MAGICMA, 0 ,Red); return ; } } // I DONT KNOW.............. //-------------------------------- / our scenario void CheckForOpenS1()= true ; void CheckOpen1() void CheckOpen2() //-------------------------------- / OR LIKE THESE int res; if ( CheckForOpenS1() == true ) { res= CheckOpen1() CheckOpen2(); }
SADECE MUM - Pozisyon nasıl açılır? - sıradaki konu olmalı. Moderatör Sen ne düşünüyorsun? yapabilirmiyim?
Seçilen senaryoyu uyguluyoruz
Sipariş nasıl gönderilir?
bir siparişimiz var
Ama bir fonksiyonda iki pozisyon açmak için ne yapmalıyım?
Bu senaryoda CheckForOpenS1() senaryomuz var. Fiyatımız doğru yerdeyse iki kez satın alıyoruz tabii ki
Ne sorduğunu gerçekten anlamıyorum. . . kendini çok belli etmiyorsun . . ya da belki sadece benim.
Bu kod size sorun çıkaracaktır. . .
if ( Bid == Close[ 1 ] + 4 * Point )
Bu konuyu okuyun: Can fiyat != fiyat ?
aksi halde olabilir
birkaç olay senaryosu ile basit bir EA nasıl yazılır
küçük bir mumdu - açık Özellikler 1
ortalama mum oldu - açık Özellikler 2
büyük bir mumdu - açık Özellikler 3
switch () bu noktada uygun bence
Fonksiyon 1 , 1 pozisyon açar ve kapanmasını sağlar
2 onları koruyan 2 pozisyon açar ve kapatır
Üç açık 2 pozisyon ama farklı bir fiyata ....
ne zaman bir mumumuz olsa, her seferinde farklı şeyler yapan başka bir işlev var
Benim için yazamayacağını biliyorum , ama herhangi bir tavsiye....
Söz verdiğim gibi tekrar baktım ama yine de bana mantıklı gelmedi, özür dilerim.
Bu asla işe yaramaz:
double bull() // check first candle -mabey is bull { double A=Open[ 1 ]; // we use double because euro/usd have point example 1.9865 double B=Close[ 1 ]; double C=B-A; return (C); // <-- C is probably never 1,2,3,4,5..... } // when we have bull catalog/ segregate him.. switch (bull()) // <-- the expression here is something like 0.00123. None of your case statements will be executed. { case 1 : break ; // nothing happen case 2 : break ; // nothing happen case 3 : break ; // nothing happen case 4 : CheckForOpenS1(); break ; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1' case 5 : CheckForOpenS2(); CheckForOpenS3() break ; // start CheckForOpenS2() and S3 .... }
Anahtarın nasıl kullanılacağı hakkında buradan okuyun: https://docs.mql4.com/basis/operators/switch
Bu hiç net değil:
void CheckOpen2() // define second function { int res; if ( Bid==Close[ 1 ]+ 8 * Point ) // change 8 Point ( 4 ==> 8 ) { res= OrderSend ( Symbol (),OP_SELL, 0.02 ,Bid, 0 , 0 , 0 , "" ,MAGICMA, 0 ,Red); return ; } }
Eşit ifade belki istenmiyor ama ne olmalı?
< olarak okunursa, yeni bir çubuk geldiğinde hemen bir SATIŞ emri gönderir (yeni çubuğun açılış fiyatı belki < önceki çubuğun +8*Puan kapanış fiyatından daha fazla olabilir)
Eğer > şeklinde okunursa fiyatın biraz yükselmesini bekleyecek ve ardından SAT emri gönderecektir. Stratejinizi gerçekten anlamıyorum, bu yüzden böyle isteniyor olabilir.
Şunu demek istediğini de hayal edebiliyorum:
if (Bid<Close[ 1 ] - 8 * Point )
1 Puanın 1 Pip'e eşit olduğu 4 haneli bir komisyoncuyla mı işlem yapıyorsunuz? Aksi takdirde, fiyat sadece 0.8 pip hareket etmelidir, bu da muhtemelen istediğiniz şey değildir (Ve spread ayrıca onu karıştırabilir).
Bence kodunuzu tekrar gözden geçirmeli ve yapabildiğiniz yerde düzeltmelisiniz. Spesifik sorularınız varsa daha fazla soru sormaktan çekinmeyin. Lütfen, stratejinizin tamamen başka bir şekilde çalışabileceğini unutmayın, çünkü bir kodlayıcı ne demek istediğinizi yanlış anladı.
benim stratejim
mum 4 ila 5 puan arasında BOĞA görünürse , mumdan sonra ( herhangi bir koşulda ) iki Buy emri göndermeye hazır olun ( fiyat bir tane almak için gerekli seviyemize ulaşırsa ve satın alma 2'ye nasıl ulaşılır )
mum 6'dan 7'ye kadar BOĞA görünüyorsa , mumdan sonra ( herhangi bir koşulda ) üç B uy emri göndermeye hazırlanın ( fiyat bir tane almak için gerekli seviyemize ulaşırsa ve 2 ve 3 alışa nasıl ulaşılır )
Bid veya Sor'da bir yerde ufak bir hatam var EA neden çalışmıyor ... ( Bu hatayı bulamıyorum ama normalde EA yazdıklarımı çok iyi yapıyor..satın alıp kapatıyor ) ama teknik planımı gösteriyor .
ŞİMDİDEN DOĞRU ÇALIŞIYOR
Aşağıya baktığınızda çok kalabalıklaşıyor ve bazen EA Bull4 senaryolarının yerini alıyor ve senaryo Bull6 Bull4'ü açıyor ve fark ettiğim gibi aniden fikrinizi değiştirip Bull6 Bull6'yı bitiriyor .
basitleştirilebilir mi ?
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#define MAGICMA 20050610
//+------------------------------------------------------------------+
//| Calculate open positions HOW MEANY OF THIS |
//+------------------------------------------------------------------+
int CalculateCurrentOrders( string symbol)
{
int buys= 0 ,sells= 0 ;
//----
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA)
{
if (OrderType()==OP_BUY) buys++;
}
}
//---- return orders volume
return (buys);
}
//+------------------------------------------------------------------+
//| Calculate candle |
//+------------------------------------------------------------------+
bool BULL4()
{
if (Close[ 1 ]-Open[ 1 ]>= 4 * Point && Close[ 1 ]-Open[ 1 ]<= 5 * Point )
return ( true );
}
bool BULL6()
{
if (Close[ 1 ]-Open[ 1 ]>= 6 * Point && Close[ 1 ]-Open[ 1 ]<= 7 * Point )
return ( true );
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void CheckForOpenBULL41()
{
int res;
if (Bid==Close[ 1 ]+ 3 * Point )
{
res= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA, 0 ,Blue);
return ;
}
}
void CheckForOpenBULL42()
{
int res;
if (Ask>OrderOpenPrice()+ 2 * Point )
{
res= OrderSend ( Symbol (),OP_BUY, 0.42 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA, 0 ,Blue);
return ;
}
}
void CheckForOpenBULL61()
{
int res;
if (Bid==Close[ 1 ]+4* Point )
{
res= OrderSend ( Symbol (),OP_BUY, 0.61 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA, 0 ,Red);
return ;
}
}
void CheckForOpenBULL62()
{
int res;
if (Ask>OrderOpenPrice()+ 2 * Point )
{
res= OrderSend ( Symbol (),OP_BUY, 0.62 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA, 0 ,Red);
return ;
}
}
void CheckForOpenBULL63()
{
int res;
if (Ask>OrderOpenPrice()+ 2 * Point )
{
res= OrderSend ( Symbol (),OP_BUY, 0.63 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA, 0 ,Red);
return ;
}
}
//+------------------------------------------------------------------+
//| Check for close order conditions |
//+------------------------------------------------------------------+
void CheckForCloseBULL()
{
RefreshRates();
if (OrderOpenPrice()+ 4 * Point < Ask)
for ( int i = OrdersTotal (); i >= 0 ;i--)
{
OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol ())
{
bool ticket = true ;
if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid, 1 ,Black);
}
}
}
//+------------------------------------------------------------------+
//| Start function |
//+------------------------------------------------------------------+
void start()
{
if (BULL4()== true && CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpenBULL41();
else CheckForCloseBULL();
if (CalculateCurrentOrders( Symbol ())== 1 ) CheckForOpenBULL42();
else CheckForCloseBULL();
//---//
if (BULL6()== true && CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpenBULL61();
else CheckForCloseBULL();
if (CalculateCurrentOrders( Symbol ())== 1 ) CheckForOpenBULL62();
else CheckForCloseBULL();
if (CalculateCurrentOrders( Symbol ())== 2 ) CheckForOpenBULL63();
else CheckForCloseBULL();
if (CalculateCurrentOrders( Symbol ())== 3 ) CheckForOpenBULL63();
else CheckForCloseBULL();
if (CalculateCurrentOrders( Symbol ())== 4 ) CheckForCloseBULL();
}
//+------------------------------------------------------------------+
benim stratejim
mum 4'ten 5'e kadar BYK görünürse , mumdan sonra ( herhangi bir koşulda ) iki veri satın alma emri göndermeye hazır olun ( fiyat bir tane satın almak için gereken seviyeye ulaşırsa ve zkup 2'ye nasıl ulaşılır )
mum 6'dan 7'ye kadar BYK görünürse , mumdan sonra ( herhangi bir koşulda ) üç satın alma siparişi göndermeye hazırlanın ( fiyat bir tane satın almak için gereken seviyeye ulaşırsa ve zkup 2 ve 3'e nasıl ulaşılır )
Bid veya Sor'da bir yerde ufak bir hatam var EA neden çalışmıyor ... ( Bu hatayı bulamıyorum ama normalde EA yazdıklarımı çok iyi yapıyor..satın alıp kapatıyor ) ama teknik planımı gösteriyor .
Aşağıya baktığınızda çok kalabalıklaşıyor ve bazen EA Bull4 senaryolarının yerini alıyor ve senaryo Bull6 Bull4'ü açıyor ve fark ettiğim gibi aniden fikrinizi değiştirip Bull6 Bull6'yı bitiriyor .
basitleştirilebilir mi ?
BYK ??
Bu yanlış . . .
for ( int i = OrdersTotal (); i >= 0 ;i--)
. . . pozisyonlar 0'dan başlar, bu nedenle OrdersTotal() - 1'den geri saymanız gerekir
Bunu yap . . . .
void CheckForCloseBull() // close ALL AT ONCE buy of course { RefreshRates(); if ( OrderOpenPrice() > Ask+ 6 * Point )
. . . OrderOpenPrice() 'i alıyorsunuz ama hangi Order için? birden fazla siparişiniz açık olacak. . .
OrderSend() çağrılarınızdaki dönüş değerini tutmak için res değişkenini kullanırsınız. . . ve onunla ne yapıyorsun? hiçbir şey, neden?
Çok iyi cevap Raptor İngiltere
1. res sorunu
EA Hareketli Ortalama çözünürlüğü üzerinde çalışıyorum , zamanın bir fonksiyonu olarak sadece 3 kez var , çünkü yok.
İlk defa "merhaba res kullanacağız " bilgi amaçlı kullanılmıştır .
siparişi göndermek için ikinci kez . OrderSend , ' void CheckForOpen () " res mevcut olmadığında , res = 343321 olan sipariş sayısını döndürür .
ancak...
Bence " void CheckForOpen ()" bu komutun doğruluğunu gözlemlerse OrderSelect bir şekilde " void CheckForOpen () " dışında o sayıyı getirmeyi deneyeceğim ..
2. OrderOpenPrice() sorunu
kesinlikle haklısın ama bu sözdizimi şaşırtıcı derecede iyi çalışıyor :) Orada bir şeyler yapmaya çalışacağım
3. OrdersTotal() - 1 kesinlikle haklısınız,
4. BYK (POLAND)= BULL tercümanında sorun var
EA'mı hala anlamayanlar için bir hikaye yaz : D hehehe
Yaptığımız tüm adımlar , fonksiyonlardır . Şimdi bir bilgisayarda yazıyorum bir işlevdir. TV şovunu izliyorum , ikinci işlev , vb.
Şimdi mutfağa geçelim ...
Bir yemek kitabımız var, içindekileri açın ve sırayla noktaları okuyun
İlk Domuz pirzolası nasıl yapılır - eti bir kaseye koyun , tuz , karabiber ekleyin, patatesleri soyun
Solda etkinlik - doğru özellikler ve birkaç tema - kolay olmadıkça hayır !
Domuz pirzolası nasıl yapılır okuduktan sonra onu yapmaya , bir şeyler yapmaya başlayın . Biftek 25 dakika sürüyor ve ben de bitmeye başladım .
Beş dakika oldu M5 (beş dakika sonra) bir sonraki noktayı bir yemek kitabı okumaya başlıyoruz .
İkinci Salata nasıl yapılır - Havuçları soyun , soğanları ve diğer pislikleri soyun
Ve burada sihir gerçekleşir , çünkü çift , akçaağaç (ikinci kişi) yarattı . Bunu domuz pirzolası ve salatada aynı anda yapıyoruz . Mutfakta iki kişiyi bir arada bulundurmaya başladık .
Ne kadar çok nokta okursanız , mutfakta o kadar çok insan belirir. Mutfaktaki insanlar görevlerini tamamladıktan ve bulaşıkları yıkadıktan sonra ortadan kaybolacaklar .
Olay mumlardır - alım satım veya kapanış için çeşitli seçenekler sunar .
- Ü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
YALNIZCA MUM - Mum nasıl kataloglanır veya ayrıştırılır?
LÜTFEN DÜZELT BENİ!
Boğa ve Ayı mumumuz var Bunu ayırmak istiyorum
tıpkı çoban gibidir. çobanın çiftliği, çiftliği ve koyunları vardır.
Koyunları traş etme mevsimi geldiğinde Bay JOHN çiftliğe gidip koyunları yakalar ve ...
İlk yakalanan koyun tıraş olmak için çok küçük - John bıraktı.
Sonraki koyun iyidir John makas alır ve koyun çıplak
Sonraki koyun iyidir ve büyük yünleri vardır - John BÜYÜK makas alır ve koyun çıplak
Sıradaki koyun Koç - John bıçak alıyor ve Koç şu anda hadım
Aynısını mum / çubuklarla yapmak istiyorum
Mumumuz gidiyor Bar[0].... bekliyoruz..... gidiyor, bekliyoruz.... 15 dakika (M15) ve işte bu! ... bu ne? Kontrol!
Bullisch Candle'ım varsa ve Candle (fiyat açık [1]-fiyat yakın [1]) 2 puan çok küçükse - bırak gitsin, hiçbir şey yapmıyoruz
Bullisch Candle'ım varsa ve Candle (fiyat açık [1]-fiyat kapanış [1]) 4 puana sahipse - programı başlat
CheckForOpenS1(); fiyatımız mumumuzun + 4 Puan üstüne çıkarsa satın alma işlevini başlatın (senaryo1)
Bullisch Candle'ım varsa ve Candle (fiyat açık [1]-fiyat yakın [1]) 5 puana sahipse -Bu çok Büyük Mum- o zaman programı başlat
CheckForOpenS2(); fiyatımız mumumuzun + 14 Puan üzerine çıkarsa satın alma işlevini başlatın (senaryo2)
Bu cadıyı her mumdan istiyorum, programı başlatmak istiyorum Büyük Mumum varsa SATIN AL, çok küçük mumum varsa bir sonrakini bekleyeceğim
Yani... bu doğru ama bir fikrim var :)
Lütfen gerekli bir şey yazmayınız.