MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 62
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Beyler, bana bunu en iyi nasıl yapacağımı söyleyin: Kaybedilen ve karlı işlemlerden elde edilen galibiyet serilerinin dağılımını görmek istiyorum... Dizilerde güçlü değilim.
Kaybedilen bir satıştan sonra
Fiyat_SonSat=5; Hacim=Hacim*Y; İzm=2; Opn_B=doğru; k=k+1;
/* Buf1[p]=Buf1[p]+1; p=0;
Uyarı ("Karlı ", Buf1[1], ", ", Buf1[2], ", ", Buf1[3], ", ", Buf1[4], ", ", Buf1[5], ", " , Buf1[6], ", ", Buf1[7], ", ", Buf1[8], ", ", Buf1[9], ", ", Buf1[10]); */
karlı bir satıştan sonra
Fiyat_SonSat=5; Hacim=HacimAçık; İzm=2; Opn_S=doğru; p=p+1;
/* Buf2[k]=Buf2[k]+1; k=0;
Uyarı ("Karsız ", Buf2[1], ", ", Buf2[2], ", ", Buf2[3], ", ", Buf2[4], ", ", Buf2[5], ", " , Buf2[6], ", ", Buf2[7], ", ", Buf2[8], ", ", Buf2[9], ", ", Buf2[10], ", ", Buf2[11] , ", ", Buf2[12], ", ", Buf2[13], ", ", Buf2[14], ", ", Buf2[15]); */
Burada sorun ne? /*'a yazmadan her şey yolunda gidiyor...
Beyler, bana bunu en iyi nasıl yapacağımı söyleyin: Kaybedilen ve karlı işlemlerden elde edilen galibiyet serilerinin dağılımını görmek istiyorum... Dizilerde güçlü değilim.
Kaybedilen bir satıştan sonra
Fiyat_SonSat=5; Hacim=Hacim*Y; İzm=2; Opn_B=doğru; k=k+1;
/* Buf1[p]=Buf1[p]+1; p=0;
Uyarı ("Karlı ", Buf1[1], ", ", Buf1[2], ", ", Buf1[3], ", ", Buf1[4], ", ", Buf1[5], ", " , Buf1[6], ", ", Buf1[7], ", ", Buf1[8], ", ", Buf1[9], ", ", Buf1[10]); */
karlı bir satıştan sonra
Price_LastSell=5; Hacim=HacimAçık; İzm=2; Opn_S=doğru; p=p+1;
/* Buf2[k]=Buf2[k]+1; k=0;
Uyarı ("Karsız ", Buf2[1], ", ", Buf2[2], ", ", Buf2[3], ", ", Buf2[4], ", ", Buf2[5], ", " , Buf2[6], ", ", Buf2[7], ", ", Buf2[8], ", ", Buf2[9], ", ", Buf2[10], ", ", Buf2[11] , ", ", Buf2[12], ", ", Buf2[13], ", ", Buf2[14], ", ", Buf2[15]); */
Burada sorun ne? /*'a yazmadan her şey yolunda gidiyor...
Bir dizi kaybeden ve karlı ticaret. Dağıtım - örneğin, 360 kaybedilen işlemimiz (bu raporda görülebilir), 110 seri 1 kaybedilen işlem, 80 seri 2 kaybeden işlem ve 30 3 kaybeden işlem var.
Bunu ben yaptım:
Kaybeden bir ticareti belirledikten sonra
k=k+1;
Karlı bir ticaret belirledikten sonra
eğer k==1 {k1=k1+1;}
eğer k==2 {k2=k2+1;}
eğer k==3 {k3=k3+1;}
k=0;
Ancak bu girdi, kârsız 15 veya daha fazla seri için çok büyük ve elverişsiz
Bir dizi kaybeden ve karlı ticaret. Dağıtım - örneğin, 360 kaybedilen işlemimiz (bu raporda görülebilir), 110 seri 1 kaybedilen işlem, 80 seri 2 kaybeden işlem ve 30 3 kaybeden işlem var.
Bunu ben yaptım:
Kaybeden bir ticareti belirledikten sonra
k=k+1;
Karlı bir ticaret belirledikten sonra
eğer k==1 {k1=k1+1;}
eğer k==2 {k2=k2+1;}
eğer k==3 {k3=k3+1;}
k=0;
Ancak bu girdi, kârsız 15 veya daha fazla seri için çok büyük ve elverişsiz
Göreviniz tam olarak açık değil.
Son kârlı/kaybeden pozisyonlardan bir dizi belirlemeniz mi yoksa tüm işlem geçmişi boyunca tüm bu serileri toplamanız mı gerekiyor?
Bunu yaptım, şimdi her tıklamada açılmıyor, ancak giriş sinyallerini atlıyor...
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
TotalBiu++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
TotalSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (TotalBiu== 0 )
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
}
if (TotalSell== 0 )
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
düzeltildi. çalışmalı
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
...
düzeltildi. çalışmalı
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
seçimi sıfırlamanız gerekiyor gibi görünüyor
double slSell,slBuy,tpSell,tpBuy;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
OrderBuy= 0 ; OrderSell= 0 ;
//-
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
seçimi sıfırlamanız gerekiyor gibi görünüyor
double slSell,slBuy,tpSell,tpBuy;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
OrderBuy= 0 ; OrderSell= 0 ;
//-
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy== 0 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
Teşekkür ederim. Şimdi bazı siparişler sinyalde değil, bazıları da yanlış açılıyor.
düzeltildi. çalışmalı
...
Teşekkür ederim. Şimdi bazı siparişler sinyalde değil, bazıları da yanlış açılıyor.
Mevcut bir çubuğu kontrol ediyorsunuz double rsi = iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
Fiyat yükselir, 70 seviyesini geçer ve ticarete giriş olur. Çubuk kapandığında, zaten RSI'nin daha düşük olduğunu görüyorsunuz, ancak bundan önce daha yüksekti ve ardından seviyenin altına döndü.
Kapalı bir çubuğu kontrol edin, o zaman bu olmayacak ve girişler onaylanmış bir sinyalde olacaktır:
çift rsi = iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 );