alexey1979621 : Sevgili forum kullanıcıları! Expert Advisor'da fiyatın kanal çizgisini geçmesi koşulu nasıl belirlenir, örneğin fiyat kanal çizgisini yukarıdan geçer ve anlaşma açılır veya kapanır? Lütfen sizi ilgilendiren şeyin bu kavşak anı olduğunu unutmayın. Yardım için minnettar olurum.
Sıfır çubuğunda kopma anını belirlemenin en basit yolu: if(High[0]>price0 && High[1]<=price1) {line is ayrılmış}, if(Low[0]<price0 && Low[ 1]>= fiyat1) {hat kırıldı}. ifs, kırılma anından mevcut çubuğun sonuna kadar TRUE olacaktır. Kanal hattınızın OBJPROP_RAY==True özelliğine sahip olması arzu edilir.
alexey1979621 : Sevgili forum kullanıcıları! Expert Advisor'da fiyatın kanal çizgisini geçmesi koşulu nasıl belirlenir, örneğin fiyat kanal çizgisini yukarıdan geçer ve anlaşma açılır veya kapanır? Lütfen sizi ilgilendiren şeyin bu kavşak anı olduğunu unutmayın. Yardım için minnettar olurum.
Birkaç yol:
Sor > kanal hattı ve Düşük[1] <= kanal hattı ise, çapraz
Teklif < kanal hattı ve Yüksek[1] >= kanal hattı ise, o zaman çaprazlayın
ExtremeTMA - utanmadan yeniden çizin. Ve büyük bir tarih parçası - daha fazla değilse, son 30 bar. Bunun üzerine bir danışman yazdım - saçmalık. Hayal edin: bir sinyal çıktı, üzerine girdi ve bir süre sonra bu sinyal artık tarihte değil - hindi yeniden çizildi ve ortaya çıktı - boşuna girdiler
Kavşağı belirlerken bir hata yaptınız: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... buna ihtiyacınız var if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... iyi, benzetme yoluyla tersi için.
PS Mesajınız için giriş penceresinin üst kısmındaki paneldeki SRC düğmesini kullanarak kodu girin
ExtremeTMA - utanmadan yeniden çizin. Ve büyük bir tarih parçası - daha fazla değilse, son 30 bar. Bunun üzerine bir danışman yazdım - saçmalık. Hayal edin: bir sinyal çıktı, üzerine girdi ve bir süre sonra bu sinyal artık tarihte değil - hindi yeniden çizildi ve ortaya çıktı - boşuna girdiler
Kavşağı belirlerken bir hata yaptınız: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... buna ihtiyacınız var if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... iyi, benzetme yoluyla tersi için.
PS Mesajınız için giriş penceresinin üst kısmındaki paneldeki SRC düğmesini kullanarak kodu girin
Düzeltildi, anlaşma yukarıdaki ekrandakiyle aynı şekilde kapatıldı ama kırmızı çarpı nerede.
ExtremeTMA'nın yeniden çizildiğini kabul ediyorum, ancak bunun giriş noktası aramasını etkilemediğine inanıyorum, buradaki ana şey filtreler. TDI göstergesini kullandım. Hayal ettiğimi uygularım (hemen ellerimin eğri olduğunu söylerim, bu yüzden proje danışmanı ellerimle eşleşir). Bununla ilgili bir sorun var, test cihazında 1 yıldır 5 saat test ediliyor (bir yerde bir hata oluştu). Zor değilse, hataları arayın.
externdouble Lots = 0.1 ;
externstring Сomment = "TMA Canal2" ;
externint TakeProfit = 20 ; //тейкпрофит (отрицательное число или ноль чтобы не использовать);externint StopLoss = 20 ; // уровень Stop Loss для покупки;externint Slippage = 2 ; // проскальзывание externint Magic = 124 ;
externstring Indi = "ExtremeTMALine" ;
externstring TimeFrame = "current time frame" ;
externint HalfLength = 56 ;
externint Price = PRICE_CLOSE ;
externdouble ATRMultiplier = 2.0 ;
externint ATRPeriod = 100 ;
externbool Interpolate = true ;
externdouble TrendThreshold = 0.5 ;
externbool Distances = false ;
externstring Indicatora = "TradersDynamicIndex" ;
externint RSI_Period = 13 ; //8-25externint RSI_Price = MODE_CLOSE; //0-6externint Volatility_Band = 34 ; //20-40externint RSI_Price_Line = 2 ;
externint RSI_Price_Type = MODE_SMA ; //0-3externint Trade_Signal_Line = 7 ;
externint Trade_Signal_Type = MODE_SMA ; //0-3externbool UseAlerts = false ;
double PriceHigh, PriceLow, SL, TP, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
int ticket;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
if ( Digits == 3 || Digits == 3 ) // для пятизначного брокера
{
TakeProfit *= 10 ;
StopLoss *= 10 ;
Slippage *= 10 ;
}
return ( 0 );
}
//+------------------------------------------------------------------+//| Calculate open positions |//+------------------------------------------------------------------+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()== 124 )
{
if (OrderType()==OP_BUY) buys++;
if (OrderType()==OP_SELL) sells++;
}
}
//---- return orders volumeif (buys> 0 ) return (buys);
elsereturn (-sells);
}
//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+void CheckForOpen()
{
double PriceHigh, PriceLow, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
int ticket;
//---- go trading only for first tiks of new barif (Volume[ 0 ]> 1 ) return ;
PriceHigh = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1 , 0 );
PriceLow = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2 , 0 );
TDIHigh = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 1 , 0 ); // голубая
TDILow = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 3 , 0 ); // голубая
RSIPriceLine = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 4 , 0 ); // зеленая
TradeSignalLine = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 5 , 0 ); // краснаяif (Open[ 1 ]>PriceHigh || Close[ 1 ]>PriceHigh || High[ 1 ]>PriceHigh && Ask<=PriceHigh || Ask>=PriceHigh && TDIHigh > 68 && RSIPriceLine < TradeSignalLine)
{
ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 , 0 , 0 , "TMA Canal2" , 124 , 0 ,Red);
return ;
}
//---- buy conditionsif (Open[ 1 ]<PriceLow || Close[ 1 ]<PriceLow || Low[ 1 ]<PriceLow && Bid>=PriceLow || Bid<=PriceLow && TDILow < 32 && RSIPriceLine > TradeSignalLine)
{
ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 3 , 0 , 0 , "TMA Canal2" , 124 , 0 ,Blue);
return ;
}
//----
}
//+------------------------------------------------------------------+//| Check for close order conditions |//+------------------------------------------------------------------+void CheckForClose()
{
double PriceHigh, PriceLow;
//---- go trading only for first tiks of new barif (Volume[ 0 ]> 1 ) return ;
PriceHigh = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1 , 0 );
PriceLow = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2 , 0 );
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderMagicNumber()!= 124 || OrderSymbol()!= Symbol ()) continue ;
//---- check order type if (OrderType()==OP_BUY)
{
if (Low[ 1 ]<=PriceHigh && Ask>PriceHigh) OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,White);
break ;
}
if (OrderType()==OP_SELL)
{
if (High[ 1 ]>=PriceLow && Bid<PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,White);
break ;
}
}
//----
}
//+------------------------------------------------------------------+//| Start function |//+------------------------------------------------------------------+void start()
{
//---- check for history and tradingif ( Bars < 100 || IsTradeAllowed()== false ) return ;
//---- calculate open orders by current symbolif (CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpen();
else CheckForClose();
//----
}
Düzeltildi, anlaşma yukarıdaki ekrandakiyle aynı şekilde kapatıldı ama kırmızı çarpı nerede.
ExtremeTMA'nın yeniden çizildiğini kabul ediyorum, ancak bunun giriş noktası aramasını etkilemediğine inanıyorum, buradaki ana şey filtreler. TDI göstergesini kullandım. Hayal ettiğimi uygularım (hemen ellerimin eğri olduğunu söylerim, bu yüzden proje danışmanı ellerimle eşleşir). Bununla ilgili bir sorun var, test cihazında 1 yıldır 5 saat test ediliyor (bir yerde bir hata oluştu). Zor değilse, hataları arayın.
Hatalar konusuna bakana kadar - birçok vaka var.
Kırmızı çarpının olduğu yerde Sat'ı kapatmak için mevcut çubuğu kontrol etmeniz gerekir. Eğer Sor<=yakın seviye && Yüksek[1]>kapat seviye
söyle bana, vadeli işlemlerde günün saatini nasıl belirleyeceğim?
MarketInfo(Symbol(),MODE_STARTING)
MarketInfo(Symbol(),MODE_EXPIRATION)
sıfır üretir
hangi komisyoncu?
aslına bakarsanız komisyoncu ayarlayacaktır. bu yüzden yapılacak ilk şey ona işkence etmektir.
Sevgili forum kullanıcıları! Expert Advisor'da fiyatın kanal çizgisini geçmesi koşulu nasıl belirlenir, örneğin fiyat kanal çizgisini yukarıdan geçer ve anlaşma açılır veya kapanır? Lütfen sizi ilgilendiren şeyin bu kavşak anı olduğunu unutmayın. Yardım için minnettar olurum.
double price0=NormalizeDouble(ObjectGetValueByShift("YourChannelLineName", 0),Rakamlar)); - çizginizin çubuktaki değeri 0'dır.
double price1=NormalizeDouble(ObjectGetValueByShift("YourChannelLineName", 1),Digits)); - 1. çubuktaki çizginizin değeri.
Sıfır çubuğunda kopma anını belirlemenin en basit yolu: if(High[0]>price0 && High[1]<=price1) {line is ayrılmış}, if(Low[0]<price0 && Low[ 1]>= fiyat1) {hat kırıldı}. ifs, kırılma anından mevcut çubuğun sonuna kadar TRUE olacaktır. Kanal hattınızın OBJPROP_RAY==True özelliğine sahip olması arzu edilir.
Sevgili forum kullanıcıları! Expert Advisor'da fiyatın kanal çizgisini geçmesi koşulu nasıl belirlenir, örneğin fiyat kanal çizgisini yukarıdan geçer ve anlaşma açılır veya kapanır? Lütfen sizi ilgilendiren şeyin bu kavşak anı olduğunu unutmayın. Yardım için minnettar olurum.
Birkaç yol:
Sor > kanal hattı ve Düşük[1] <= kanal hattı ise, çapraz
Teklif < kanal hattı ve Yüksek[1] >= kanal hattı ise, o zaman çaprazlayın
1 periyot ile MA kullanılarak kontrol edilebilir
. Muhtemelen soruyu yanlış gündeme getirdim, kodun bir kısmını eklemek gerekliydi. kendimi düzeltiyorum.
teklif ile
kapanışta artmedia70 geçişi böyle işaret etti. İşlem ekrana göre kapanır. Ama anlaşmanın çaprazın olduğu yerde kapatılması gerekiyor.
geçersiz CheckForClose()
{
çift FiyatYüksek, FiyatDüşük;
//---- sadece yeni çubuğun ilk tikleriyle işlem yap
if(Volume[0]>1) dönüş;
PriceHigh = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, TrendThreshold, Distances, 1, 0);
PriceLow = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara;
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) devam ediyor;
//---- sipariş tipini kontrol et
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,Beyaz);
kırmak;
}
if(OrderType()==OP_SEL)
{
if(Yüksek[1]>=FiyatDüşük && Bid<=FiyatDüşük) OrderClose(OrderTicket(),OrderLots(),Ask,3,Beyaz);
kırmak;
}
}
//----
}
Programdaki son KAPALI siparişi nasıl seçip ondan bilgi alabilirim?
Kalbinin istediğini bul.
Yardımın için teşekkürler
. Muhtemelen soruyu yanlış gündeme getirdim, kodun bir kısmını eklemek gerekliydi. kendimi düzeltiyorum.
teklif ile
kapanışta artmedia70 geçişi böyle işaret etti. İşlem ekrana göre kapanır. Ama anlaşmanın çaprazın olduğu yerde kapatılması gerekiyor.
geçersiz CheckForClose()
{
çift FiyatYüksek, FiyatDüşük;
//---- sadece yeni çubuğun ilk tikleriyle işlem yap
if(Volume[0]>1) dönüşü;
PriceHigh = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, TrendThreshold, Distances, 1, 0);
PriceLow = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara;
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) devam ediyor;
//---- sipariş tipini kontrol et
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,Beyaz);
kırmak;
}
if(OrderType()==OP_SEL)
{
if(Yüksek[1]>=FiyatDüşük && Bid<=FiyatDüşük) OrderClose(OrderTicket(),OrderLots(),Ask,3,Beyaz);
kırmak;
}
}
//----
}
ExtremeTMA - utanmadan yeniden çizin. Ve büyük bir tarih parçası - daha fazla değilse, son 30 bar. Bunun üzerine bir danışman yazdım - saçmalık. Hayal edin: bir sinyal çıktı, üzerine girdi ve bir süre sonra bu sinyal artık tarihte değil - hindi yeniden çizildi ve ortaya çıktı - boşuna girdiler
Kavşağı belirlerken bir hata yaptınız: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... buna ihtiyacınız var if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... iyi, benzetme yoluyla tersi için.
PS Mesajınız için giriş penceresinin üst kısmındaki paneldeki SRC düğmesini kullanarak kodu girin
ZZY Peki, çarpı işareti olan ekran nerede?
ExtremeTMA - utanmadan yeniden çizin. Ve büyük bir tarih parçası - daha fazla değilse, son 30 bar. Bunun üzerine bir danışman yazdım - saçmalık. Hayal edin: bir sinyal çıktı, üzerine girdi ve bir süre sonra bu sinyal artık tarihte değil - hindi yeniden çizildi ve ortaya çıktı - boşuna girdiler
Kavşağı belirlerken bir hata yaptınız: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... buna ihtiyacınız var if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... iyi, benzetme yoluyla tersi için.
PS Mesajınız için giriş penceresinin üst kısmındaki paneldeki SRC düğmesini kullanarak kodu girin
Düzeltildi, anlaşma yukarıdaki ekrandakiyle aynı şekilde kapatıldı ama kırmızı çarpı nerede.
ExtremeTMA'nın yeniden çizildiğini kabul ediyorum, ancak bunun giriş noktası aramasını etkilemediğine inanıyorum, buradaki ana şey filtreler. TDI göstergesini kullandım. Hayal ettiğimi uygularım (hemen ellerimin eğri olduğunu söylerim, bu yüzden proje danışmanı ellerimle eşleşir). Bununla ilgili bir sorun var, test cihazında 1 yıldır 5 saat test ediliyor (bir yerde bir hata oluştu). Zor değilse, hataları arayın.
Düzeltildi, anlaşma yukarıdaki ekrandakiyle aynı şekilde kapatıldı ama kırmızı çarpı nerede.
ExtremeTMA'nın yeniden çizildiğini kabul ediyorum, ancak bunun giriş noktası aramasını etkilemediğine inanıyorum, buradaki ana şey filtreler. TDI göstergesini kullandım. Hayal ettiğimi uygularım (hemen ellerimin eğri olduğunu söylerim, bu yüzden proje danışmanı ellerimle eşleşir). Bununla ilgili bir sorun var, test cihazında 1 yıldır 5 saat test ediliyor (bir yerde bir hata oluştu). Zor değilse, hataları arayın.
Hatalar konusuna bakana kadar - birçok vaka var.
Kırmızı çarpının olduğu yerde Sat'ı kapatmak için mevcut çubuğu kontrol etmeniz gerekir. Eğer Sor<=yakın seviye && Yüksek[1]>kapat seviye