[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 1121 1...111411151116111711181119112011211122112311241125112611271128...1145 Yeni yorum dzhini 2011.01.10 23:49 #11201 iyi günler/geceler İşe yaramayacak kadar ilkel bir şekilde anlaşmayı tersine çevirmeye çalışıyorum (EA'daki hesaplama kenelerle yapılıyor): if(CalculateCurrentOrders(Symbol())>0 && Close[1]<LowLevel) // alım emri olup olmadığını belirler && mum düşük seviyenin altında kapanırsa { CheckForClose(); // siparişi kapat OpenSell(); // satış emri açma dönüş; } Söyle bana neyi yanlış yapıyorum? Bu boşluğu doldurmaya yardımcı olacak bağlantılar için de minnettar olurum. MQL4 ve MQL5 ile İlginç bir şeyler Yeni başlayanlardan sorular MQL4 --- 2011.01.11 00:05 #11202 dzhini : Anlaşmayı o kadar ilkel bir şekilde tersine çevirmeye çalışıyorum ki bu işe yaramıyor (EA'daki hesaplama kenelere göre gidiyor): if( CalculateCurrentOrders(Symbol())> 0 && Close[1]<LowLevel) // satın alma emri olup olmadığını belirler && mum düşük seviyenin altında kapanırsa bu fonksiyonda muhtemelen tüm siparişleri sayarsınız. ama Bai'ye ihtiyacın var Naomi 2011.01.11 07:45 #11203 Time1 ve Time2 arasında kaç dakika olduğu nasıl belirlenir? datetime Time_1 = D'2011.01.12 13:30' ; datetime Time_2 = D'2011.01.05 10:30' ; минут = Time_1- Time_2 dzhini 2011.01.11 09:52 #11204 sergeev : bu fonksiyonda muhtemelen tüm siparişleri sayarsınız. ama Bai'ye ihtiyacın var Bu standart işlevdir: int CalculateCurrentOrders(dize sembolü) { int satın alır = 0, satar = 0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) satın alır++; if(OrderType()==OP_SEL) satıyor++; } } if(satın alır>0) iade(satın alır); başka iade(-satış); } >0 ise, bunlar alış emirleridir , <0 ise satış emirleridir))) [ARŞİV!] Forumu kirletmemek için "İdeal" ticaret sistemi [WARNING CLOSED!] Any newbie --- 2011.01.11 10:17 #11205 Eliza : Time1 ve Time2 arasında kaç dakika olduğu nasıl belirlenir? fark saniye sayısını döndürür. 60'a bölün. dakika sayısını alın. dzhini 2011.01.11 11:30 #11206 Ters anlaşma. Danışmanın yapısı değiştirildi - işlevleri kaldırıldı. Belirli koşullar altında bir mum üzerinde nasıl kapatılır ve açılır. dış çift TP = 70; //kar almak dış çift SL = 0; //kaybı durdurmak harici çift Parti = 0.1; çift HighLevel; çift LowLevel; intresBuy=0; intresSell=0; //+------------------------------------------- --------------------+ //| uzman başlatma işlevi | //+------------------------------------------- --------------------+ int init() { HighLevel=Yüksek[1]; LowLevel=Düşük[1]; dönüş; } //+------------------------------------------- --------------------+ //| uzman işlevi | //+------------------------------------------- --------------------+ geçersiz başlangıç() { if(Bars<100 && IsTradeAllowed()==false) return; if(resBuy==0 && resSell==0 && CheckBreak()==-1) { resSell=SiparişGönder(Symbol(),OP_SELL,Lot,Teklif,2,0,Teklif -TP,"",MAGICMA,0,Kırmızı); HighLevel=DüşükSeviye; LowLevel=Kapat[1]; dönüş; } if(resBuy==0 && resSell==0 && CheckBreak()==1) { resBuy=SiparişGönder(Symbol(),OP_BUY,Lot,Sor,2,0,Sor + TP,"",MAGICMA,0,Mavi); DüşükSeviye=YüksekSeviye; HighLevel=Kapat[1]; dönüş; } if(resBuy!=0 && resSell==0 && Kapat[1]<LowLevel) //----------------------------- -------- bu kısım ilgi çekicidir: aynı çubukta kapanma ve açılma { bool closeBuy=SiparişKapat(resBuy, Lot, Bid, 2, Blue); // while(!IsTradeAllowed()) Sleep(100); resSell=SiparişGönder(Symbol(),OP_SELL,Lot,Teklif,2,0,Teklif -TP,"",MAGICMA,0,Kırmızı); HighLevel=DüşükSeviye; LowLevel=Kapat[1]; dönüş; } if(resSell!=0 && resBuy==0 && Kapat[1]>YüksekSeviye) //-------------------------------- -------- bu kısım ilgi çekicidir: aynı çubukta kapanma ve açılma { bool closeSell=SiparişKapat(resSell, Lot, Ask, 0.0002, Red); // while(!IsTradeAllowed()) Sleep(100); resBuy=SiparişGönder(Symbol(),OP_BUY,Lot,Sor,2,0,Sor + TP,"",MAGICMA,0,Mavi); DüşükSeviye=YüksekSeviye; HighLevel=Kapat[1]; dönüş; } } //------------------------------------------------ ----------------- Düşük ve Yüksek molayı kontrol et (Func) çift CheckBreak() { çift mum=Aç[1]-Kapat[1]; if(candle>0 && Low[1]<LowLevel) return(-1); if(mum<0 && Yüksek[1]>YüksekSeviye) dönüş(1); } [WARNING CLOSED!] Any newbie [ARŞİV] Forumu kirletmemek için Nasıl kodlanır? Naomi 2011.01.11 12:05 #11207 sergeev : fark saniye sayısını döndürür. 60'a bölün. dakika sayısını alın. Benim için sadece 1971.03.04 12:00 tarihini gösteriyor, belki dönüştürülmesi gerekiyor? extern datetime Time_1 = D'2011.01.12 13:30' ; extern datetime Time_2 = D'2011.01.05 10:30' ; bool Commentari = true; int start() { if (Commentari){ Comment ( "\n Дата = " + TimeToStr((Time_1-Time_2)/ 60 ), " минут" , "\n==============================" );} return ( 0 ); } --- 2011.01.11 12:08 #11208 Eliza : Sadece benim için tarihi gösteriyor, belki dönüştürülmesi gerekiyor? ilk - neden 60 ile çarpıyorsun ikincisi - ekranda dakika sayısını 00:15 gibi bir süre olarak görüntülemek istiyorsanız, 60 ile bölmeye veya çarpmaya gerek yok. Naomi 2011.01.11 12:24 #11209 sergeev : ilk - neden 60 ile çarpıyorsun ikincisi - ekranda dakika sayısını 00:15 gibi bir süre olarak görüntülemek istiyorsanız, 60 ile bölmeye veya çarpmaya gerek yok. Evet bölme için düzelttim ama yıl çıkıyor 1970.01.01 02:51 Ekran için buna ihtiyacım yok, sadece bu süre için tarihsiz dakika sayısını bulmak istedim .... Bölmeseniz bile, yine de tarihi görüntüler, yoksa yine de işlevin iptal edildiği tarihi çıkarmam gerekir mi? tarihsaat bir tarih ve saattir, 1 Ocak 1970'de 0000 saatten beri geçen saniye sayısını içeren işaretsiz bir tamsayıdır. extern datetime Time_1 = D'2011.01.12 13:30' ; extern datetime Time_2 = D'2011.01.05 10:30' ; datetime me_2 = D'1970.01.01 00:00' ; bool Commentari = true; int start() { if (Commentari){ Comment ( "\n Дата = " + TimeToStr(me_2-(Time_1-Time_2)), " минут" , "\n==============================" );} return ( 0 ); } 1970.01.01 02:51 tarihini çıkarırsam geçersiz zamanı atıyor, sadece bu süreden dakika sayısını almam gerekiyor, örneğin bu süre içinde 25000 dakika varsa, o zaman buna ihtiyacım var şekil 25000 ... bunun gibi bir şey ( yoksa dil µl ile elde etmek mümkün değil mi? tamamen kayboldum [Arşivle!] Forumu kirletmemek için Fin'in ortak hareketinin analizine --- 2011.01.11 12:48 #11210 Yalnızca dakika sayısına ihtiyacınız varsa, TimeToStr kullanmanız için kesinlikle hiçbir neden yoktur. Zaman sıradan bir int sayısıdır Veya bir seçenek olarak - TimeToStr'ı yalnızca TIME_MINUTE bayrağıyla kullanın 1...111411151116111711181119112011211122112311241125112611271128...1145 Yeni yorum
iyi günler/geceler
İşe yaramayacak kadar ilkel bir şekilde anlaşmayı tersine çevirmeye çalışıyorum (EA'daki hesaplama kenelerle yapılıyor):
if(CalculateCurrentOrders(Symbol())>0 && Close[1]<LowLevel) // alım emri olup olmadığını belirler && mum düşük seviyenin altında kapanırsa
{
CheckForClose(); // siparişi kapat
OpenSell(); // satış emri açma
dönüş;
}
Söyle bana neyi yanlış yapıyorum? Bu boşluğu doldurmaya yardımcı olacak bağlantılar için de minnettar olurum.
dzhini :
Anlaşmayı o kadar ilkel bir şekilde tersine çevirmeye çalışıyorum ki bu işe yaramıyor (EA'daki hesaplama kenelere göre gidiyor):
if( CalculateCurrentOrders(Symbol())> 0 && Close[1]<LowLevel) // satın alma emri olup olmadığını belirler && mum düşük seviyenin altında kapanırsa
Time1 ve Time2 arasında kaç dakika olduğu nasıl belirlenir?
bu fonksiyonda muhtemelen tüm siparişleri sayarsınız. ama Bai'ye ihtiyacın var
Bu standart işlevdir:
int CalculateCurrentOrders(dize sembolü)}
>0 ise, bunlar alış emirleridir , <0 ise satış emirleridir)))
Time1 ve Time2 arasında kaç dakika olduğu nasıl belirlenir?
fark saniye sayısını döndürür.
60'a bölün. dakika sayısını alın.
dış çift TP = 70; //kar almak
dış çift SL = 0; //kaybı durdurmak
harici çift Parti = 0.1;
çift HighLevel;
çift LowLevel;
intresBuy=0;
intresSell=0;
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
HighLevel=Yüksek[1];
LowLevel=Düşük[1];
dönüş;
}
//+------------------------------------------- --------------------+
//| uzman işlevi |
//+------------------------------------------- --------------------+
geçersiz başlangıç()
{
if(Bars<100 && IsTradeAllowed()==false) return;
if(resBuy==0 && resSell==0 && CheckBreak()==-1)
{
resSell=SiparişGönder(Symbol(),OP_SELL,Lot,Teklif,2,0,Teklif -TP,"",MAGICMA,0,Kırmızı);
HighLevel=DüşükSeviye;
LowLevel=Kapat[1];
dönüş;
}
if(resBuy==0 && resSell==0 && CheckBreak()==1)
{
resBuy=SiparişGönder(Symbol(),OP_BUY,Lot,Sor,2,0,Sor + TP,"",MAGICMA,0,Mavi);
DüşükSeviye=YüksekSeviye;
HighLevel=Kapat[1];
dönüş;
}
if(resBuy!=0 && resSell==0 && Kapat[1]<LowLevel) //----------------------------- -------- bu kısım ilgi çekicidir: aynı çubukta kapanma ve açılma
{
bool closeBuy=SiparişKapat(resBuy, Lot, Bid, 2, Blue);
// while(!IsTradeAllowed()) Sleep(100);
resSell=SiparişGönder(Symbol(),OP_SELL,Lot,Teklif,2,0,Teklif -TP,"",MAGICMA,0,Kırmızı);
HighLevel=DüşükSeviye;
LowLevel=Kapat[1];
dönüş;
}
if(resSell!=0 && resBuy==0 && Kapat[1]>YüksekSeviye) //-------------------------------- -------- bu kısım ilgi çekicidir: aynı çubukta kapanma ve açılma
{
bool closeSell=SiparişKapat(resSell, Lot, Ask, 0.0002, Red);
// while(!IsTradeAllowed()) Sleep(100);
resBuy=SiparişGönder(Symbol(),OP_BUY,Lot,Sor,2,0,Sor + TP,"",MAGICMA,0,Mavi);
DüşükSeviye=YüksekSeviye;
HighLevel=Kapat[1];
dönüş;
}
}
//------------------------------------------------ ----------------- Düşük ve Yüksek molayı kontrol et (Func)
çift CheckBreak()
{
çift mum=Aç[1]-Kapat[1];
if(candle>0 && Low[1]<LowLevel) return(-1);
if(mum<0 && Yüksek[1]>YüksekSeviye) dönüş(1);
}
fark saniye sayısını döndürür.
60'a bölün. dakika sayısını alın.
Benim için sadece 1971.03.04 12:00 tarihini gösteriyor, belki dönüştürülmesi gerekiyor?
Sadece benim için tarihi gösteriyor, belki dönüştürülmesi gerekiyor?
ilk - neden 60 ile çarpıyorsun
ikincisi - ekranda dakika sayısını 00:15 gibi bir süre olarak görüntülemek istiyorsanız,
60 ile bölmeye veya çarpmaya gerek yok.
ilk - neden 60 ile çarpıyorsun
ikincisi - ekranda dakika sayısını 00:15 gibi bir süre olarak görüntülemek istiyorsanız,
60 ile bölmeye veya çarpmaya gerek yok.
Evet bölme için düzelttim ama yıl çıkıyor 1970.01.01 02:51
Ekran için buna ihtiyacım yok, sadece bu süre için tarihsiz dakika sayısını bulmak istedim ....
Bölmeseniz bile, yine de tarihi görüntüler, yoksa yine de işlevin iptal edildiği tarihi çıkarmam gerekir mi?
Yalnızca dakika sayısına ihtiyacınız varsa, TimeToStr kullanmanız için kesinlikle hiçbir neden yoktur.
Zaman sıradan bir int sayısıdır
Veya bir seçenek olarak - TimeToStr'ı yalnızca TIME_MINUTE bayrağıyla kullanın