bazen yeni başlayanlar şaşkına döner ... tam olarak mantık, basit insan mantığı. ve programlama oldukça doğrusaldır. terimlerinizi tek bir satırda düşünmeye çalışın.
FAQ : bazen yeni başlayanlar şaşkına döner ... tam olarak mantık, basit insan mantığı. ve programlama oldukça doğrusaldır. terimlerinizi tek bir satırda düşünmeye çalışın.
Böyle bir fikri nasıl kodlayacağınızı söyleyen herkese çok minnettar olurum.
TF 5 programı
Şu anda teklif 1.3150
Bir fiyat seviyesi var - 1.3000.
Fiyat düşüyor.
===================================
// Fiyat 1.3000'i geçerse
// Fiyat 1.3000'i ilk kez geçerse
// Fiyat 1.3000'i ilk kez geçersevegeçişte15 saatlik mumun içinde olacak (yani bu 15:00,15:05 .....15:55)
// Bir anlaşma aç.
===================================
Teşekkür ederim.
bu sadece tam olarak uygulanmayan bir fikir
hariciçiftçaprazSeviye=1.3;hariciintsaat=15;intbaşlat(){statikintgeçmek=0;Eğer(TimeHour(TimeCurrent())==saat){// mum saat saatine karşılık gelirEğer(isCrossPrice(crossLevel,Bid)){// Hemzemin geçiş geçerli Tekliftirçapraz++;Eğer(çapraz==1){// seviyenin ilk numaralandırmasıEğer(Bu mumda daha önce sipariş açılmadı){// bu kontrolü kendiniz uygulayınopenOrder();// siparişi aç - uygulamayı kendin bulgeçmek=0;}}}}}boolisCrossPrice(çiftseviye,çiftfiyat){boolres=yanlış;statikçiftönceki=0;Eğer(önceki>0){Eğer((önceki<=seviye&&fiyat>seviye)||// seviye atlama(önceki>=seviye&&fiyat<seviye)){// hemzemin aşağıres=doğru;}}önceki=fiyat;dönüş(res);}
İkinci gün acı çekiyorum ve çözemiyorum. Son n çubuk için en düşük fiyatı bulmanız gerekir, ancak mevcut çubuktan değil, işlev aracılığıyla alınan çubuktan. İşlev, emrin açıldığı çubuğun dizinini döndürür. Bu çubuktan, tarihteki en düşük fiyat n çubuklarını bulmanız gerekiyor. Aşağıda kodum, yanlış olan ne?
double low_price_n_bar()
{
double low_bar= 100000 , index_bar;
for ( int i=time_orders; i<=count_bar; i++) //time_orders индекс бара получаемого из функции, count_bars внешняя переменная количество баров для сдвига назад по истории
{
index_bar= ND(iLow( Symbol (), 0 ,i));
if (index_bar<low_bar)
{
low_bar=index_bar;
}
}
return (low_bar);
}
double MA1 = NormalizeDouble (iMA(NULL,TimeFrame_2,MA_Period_2,MA_Shift_2,MA_Method_2,Applied_Price_2,0),Digits); // burada 0, belirtilen çubuğa göre geçerli çubuğa göre bir kaymadır. önceki dönem sayısı //double MA21 = NormalizeDouble(iMA(NULL,timeframe_2,period_2,ma_shift_2,ma_method_2,applied_price_2,2),Digits); double MA2 = NormalizeDouble(iMA(NULL,TimeFrame_3,MA_Period_3,MA_Shift_3,MA_Method_3,Applied_Price_3,0),Digits); //double MA31 = NormalizeDouble(iMA(NULL,timeframe_3,period_3,ma_shift_3,ma_method_3,applied_price_3,2),Digits); double MA3 = NormalizeDouble(iMA(NULL,TimeFrame_4,MA_Period_4,MA_Shift_4,MA_Method_4,Applied_Price_4,0),Digits);
if (MaxOrders>b && Düşük[0]>=MathMax(MA1,MA2)&& Düşük[0]>MA3 && Sor>MathMax(MA1,MA2)+DeltaOpen*Nokta && Sor>MA3 && MA2<MA3 && MA1<MA3 && OsMA>0 && Ticaret) { if (OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP,"Puria_1",Magic,0,Blue) ==-1) TimeBar=0; başka TimeBar=Zaman[0];
} if (MaxOrders>s && Yüksek[0]<=MathMin(MA1,MA2) && Yüksek[0]<MA3 && Bid<MathMin(MA1,MA2)-DeltaOpen*Point && Bid<MA3 && MA1>MA3 && MA2>MA3 && OsMA<0 && Ticaret) { if (OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,SL,TP,"Puria_1",Magic,0,Red) ==-1) TimeBar=0; başka TimeBar=Zaman[0]; }
dönüş(0);
Bu koşullarla danışman, diyelim ki SATIŞ'ta bir anlaşma açar, kârla kapatır ve hemen SAT'ta başka bir anlaşma açar. Danışmana, bir sinyal geldiğinde, yalnızca bir işlemin açılması gerektiğini, yani. bir sinyal - bir anlaşma. Şimdiden teşekkürler.
Anlaşıldı, sonra daha fazla soru:
ve bu nedenle mumun açılış süresini şu fonksiyonla kontrol etmeniz gerekir: iTime
Mumun açılma zamanını şu fonksiyonla kontrol etmeye çalıştım : iTime
Sipariş 15 saatlik mumda açılır...... ancak 15 saatlik mum genellikle ilk mum değildir.
Ondan önce, daha önceki mumlar 1.3000 ile zaten temas halindeydi.
Ve ihtiyacım var - böylece 1.3000'i geçen 15 saatlik mumdan önce - başka mum yoktu.
Teşekkür ederim.
bazen yeni başlayanlar şaşkına döner ... tam olarak mantık, basit insan mantığı. ve programlama oldukça doğrusaldır. terimlerinizi tek bir satırda düşünmeye çalışın.
Size fikrimi grafiksel olarak göstereyim.
http://clip2net.com/s/5vbxUK
Bu fikri tek bir satıra nasıl sığdırırsınız?
Teşekkür ederim.zamanında, ters sırada. program bu şekilde analiz edecektir. Bir karar noktasında olduğunuzu hayal edin.
Üzgünüm, niyetinizi tam olarak anlamadım.
Nasıl görünebileceğini kod şeklinde yazarsanız minnettar olurum..
Teşekkür ederim.
Herkese iyi günler!
Böyle bir fikri nasıl kodlayacağınızı söyleyen herkese çok minnettar olurum.
TF 5 programı
Şu anda teklif 1.3150
Bir fiyat seviyesi var - 1.3000.
Fiyat düşüyor.
===================================
// Fiyat 1.3000'i geçerse
// Fiyat 1.3000'i ilk kez geçerse
// Fiyat 1.3000'i ilk kez geçerse ve geçişte 15 saatlik mumun içinde olacak (yani bu 15:00, 15:05 ..... 15:55)
// Bir anlaşma aç.
===================================
Teşekkür ederim.bu sadece tam olarak uygulanmayan bir fikir
bu sadece tam olarak uygulanmayan bir fikir
Üzgünüm, niyetinizi tam olarak anlamadım.
Nasıl görünebileceğini kod şeklinde yazarsanız minnettar olurum..
Teşekkür ederim.
Kod hala çok uzakta, prensibi, algoritmayı anlıyorsunuz. yani algoritma oluşturmayı öğrenir öğrenmez kodla kendinizi hemen daha iyi hissedeceksiniz.
İkinci gün acı çekiyorum ve çözemiyorum. Son n çubuk için en düşük fiyatı bulmanız gerekir, ancak mevcut çubuktan değil, işlev aracılığıyla alınan çubuktan. İşlev, emrin açıldığı çubuğun dizinini döndürür. Bu çubuktan, tarihteki en düşük fiyat n çubuklarını bulmanız gerekiyor. Aşağıda kodum, yanlış olan ne?
Sevgili forum kullanıcıları! Büyük yardım talebi.
if (TimeBar==Time[0]) return(0);
double MA1 = NormalizeDouble (iMA(NULL,TimeFrame_2,MA_Period_2,MA_Shift_2,MA_Method_2,Applied_Price_2,0),Digits); // burada 0, belirtilen çubuğa göre geçerli çubuğa göre bir kaymadır. önceki dönem sayısı
//double MA21 = NormalizeDouble(iMA(NULL,timeframe_2,period_2,ma_shift_2,ma_method_2,applied_price_2,2),Digits);
double MA2 = NormalizeDouble(iMA(NULL,TimeFrame_3,MA_Period_3,MA_Shift_3,MA_Method_3,Applied_Price_3,0),Digits);
//double MA31 = NormalizeDouble(iMA(NULL,timeframe_3,period_3,ma_shift_3,ma_method_3,applied_price_3,2),Digits);
double MA3 = NormalizeDouble(iMA(NULL,TimeFrame_4,MA_Period_4,MA_Shift_4,MA_Method_4,Applied_Price_4,0),Digits);
double OsMA = NormalizeDouble(iOsMA(NULL,TimeFrame_5,FastEMA_5,SlowEMA_5,SignalSMA_5,Applied_Price_5,0),Digits);
if (MaxOrders>b && Düşük[0]>=MathMax(MA1,MA2)&& Düşük[0]>MA3 && Sor>MathMax(MA1,MA2)+DeltaOpen*Nokta && Sor>MA3 && MA2<MA3 && MA1<MA3 && OsMA>0 && Ticaret)
{
if (OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP,"Puria_1",Magic,0,Blue) ==-1) TimeBar=0;
başka TimeBar=Zaman[0];
}
if (MaxOrders>s && Yüksek[0]<=MathMin(MA1,MA2) && Yüksek[0]<MA3 && Bid<MathMin(MA1,MA2)-DeltaOpen*Point && Bid<MA3 && MA1>MA3 && MA2>MA3 && OsMA<0 && Ticaret)
{
if (OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,SL,TP,"Puria_1",Magic,0,Red) ==-1) TimeBar=0;
başka TimeBar=Zaman[0];
}
dönüş(0);
Bu koşullarla danışman, diyelim ki SATIŞ'ta bir anlaşma açar, kârla kapatır ve hemen SAT'ta başka bir anlaşma açar. Danışmana, bir sinyal geldiğinde, yalnızca bir işlemin açılması gerektiğini, yani. bir sinyal - bir anlaşma.
Şimdiden teşekkürler.