stokastik - sayfa 6

 
king1898 :

bu resimde iki ok iki sinyal vermeli ama ea'm gönderemiyor, neden?

Tüm kodunuzu görmediğimiz için söylemek zor. Kontrol etmek ve karşılaştırmak için arabellek değerlerinizi yazdırabilirsiniz.
 
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//-------------------------------------------------------------------


//-------------------------------------------------------------------
#include <Trade\Trade.mqh>
//--- input parameters
input int      StopLoss=-100;      // Stop Loss$
//input int      TakeProfit=100;   // Take Profit
//input int      KD_Period=9;     // KD Period
input int      K_Period=9;     // K Period
input int      D_Period=3;     // D Period
//input int      MA_Period=8;      // Moving Average Period
input int      EA_Magic=12345;   // EA Magic Number
//input double   Adx_Min=22.0;     // Minimum ADX Value
//---
//---input double Lot=0.01;   // Lots to Trade
input double MaxPosition=3.00;  //Max position
input double P1=0.12;    //P1 position1
input double P2=0.32;
input double P3=0.77;
input double P4=1.92;
input double P5=2.85;
input double P6=3.57;
//
input double PF1=10;     //PF1 profit1
input double PF2=50;
input double PF3=100;
input double PF4=500;
input double PF5=800;
input double PF6=1500;

//

//--- Other parameters
int KDHandle; // handle for our stochastic indicator
//int maHandle;  // handle for our Moving Average indicator
double K[],D[]; // Dynamic arrays to hold the values of K,D values for each bars
//double maVal[]; // Dynamic array to hold the values of Moving Average for each bars
double p_close; // Variable to store the close value of a bar
int STP, TKP;   // To be used for Stop Loss & Take Profit values
double TTL_profit;  //to be used for Total profit
//double hisBuyLot=0.05;
//double hisSellLot=0.05;
double TTLBuy_position;
double TTLSell_position;
int Buytimes;  //to be use for buy times
int Selltimes; // to be used for sell times
bool special_close_p=false;
double special_profit=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Get handle for KD indicator
   KDHandle=iStochastic(NULL,0,K_Period,D_Period,3,MODE_SMA,STO_LOWHIGH);
//--- Get the handle for Moving Average indicator
//   maHandle=iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE);
//--- What if handle returns Invalid Handle
   if(KDHandle<0)
     {
      Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
      return(-1);
     }

//--- Let us handle currency pairs with 5 or 3 digit prices instead of 4
   //STP = StopLoss;
   //TKP = TakeProfit;
   //if(_Digits==5 || _Digits==3)
   //  {
   //   STP = STP*10;
   //   TKP = TKP*10;
   //  }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Release our indicator handles
   IndicatorRelease(KDHandle);
//   IndicatorRelease(maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- Do we have enough bars to work with
   if(Bars(_Symbol,_Period)<60) // if total bars is less than 60 bars
     {
      Alert("We have less than 60 bars, EA will now exit!!");
      return;
     }  

// We will use the static Old_Time variable to serve the bar time.
// At each OnTick execution we will check the current bar time with the saved one.
// If the bar time isn't equal to the saved time, it indicates that we have a new tick.

   static datetime Old_Time;
   datetime New_Time[1];
   bool IsNewBar=false;

// copying the last bar time to the element New_Time[0]
   int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
   if(copied>0) // ok, the data has been copied successfully
     {
      if(Old_Time!=New_Time[0]) // if old time isn't equal to new bar time
        {
         IsNewBar=true;   // if it isn't a first call, the new bar has appeared
         if(MQL5InfoInteger(MQL5_DEBUGGING)) Print("We have new bar here ",New_Time[0]," old time was ",Old_Time);
         Old_Time=New_Time[0];            // saving bar time
        }
     }
   else
     {
      Alert("Error in copying historical times data, error =",GetLastError());
      ResetLastError();
      return;
     }

//--- EA should only check for new trade if we have a new bar
   if(IsNewBar==false)
     {
      return;
     }

//--- Do we have enough bars to work with
   int Mybars=Bars(_Symbol,_Period);
   if(Mybars<60) // if total bars is less than 60 bars
     {
      Alert("We have less than 60 bars, EA will now exit!!");
      return;
     }

//--- Define some MQL5 Structures we will use for our trade
   MqlTick latest_price;      // To be used for getting recent/latest price quotes
   MqlTradeRequest mrequest;  // To be used for sending our trade requests
   MqlTradeResult mresult;    // To be used to get our trade results
   MqlRates mrate[];          // To be used to store the prices, volumes and spread of each bar
   ZeroMemory(mrequest);      // Initialization of mrequest structure
/*
     Let's make sure our arrays values for the Rates, KD Values 
     is store serially similar to the timeseries array
*/
// the rates arrays
   ArraySetAsSeries(mrate,true);
// the KD Kvalues array
   ArraySetAsSeries(K,true);
// the KD Dvalues array
   ArraySetAsSeries(D,true);
// the ADX values arrays
//   ArraySetAsSeries(adxVal,true);
// the MA-8 values arrays
//   ArraySetAsSeries(maVal,true);


//--- Get the last price quote using the MQL5 MqlTick Structure
   if(!SymbolInfoTick(_Symbol,latest_price))
     {
      Alert("Error getting the latest price quote - error:",GetLastError(),"!!");
      return;
     }

//--- Get the details of the latest 3 bars,default period,
   if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
     {
      Alert("Error copying rates/history data - error:",GetLastError(),"!!");
      ResetLastError();
      return;
     }

//--- Copy the new values of our indicators to buffers (arrays) using the handle
   if(CopyBuffer(KDHandle,0,0,2,K)<0 || CopyBuffer(KDHandle,1,0,2,D)<0)
     {
      Alert("Error copying Stochastic KD indicator Buffers - error:",GetLastError(),"!!");
      ResetLastError();
      return;
     }
//     
   double Buy_order=0.02;  //Buy order 
   double Sell_order=0.02;
   
//--- we have no errors, so continue
//--- Do we have positions opened already?
   bool Buy_opened=false;  // variable to hold the result of Buy opened position
   bool Sell_opened=false; // variables to hold the result of Sell opened position

   if(PositionSelect(_Symbol)==true) // we have an opened position
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //It is a Buy
         //Print("here - " , PositionsTotal());
         Print("1-Buy_opened - Total Buy position is ", PositionGetDouble(POSITION_VOLUME));
         TTLBuy_position=PositionGetDouble(POSITION_VOLUME);
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // It is a Sell
         //Print("here - " , PositionsTotal());
         Print("1-Sell_opened - Total Sell position is ", PositionGetDouble(POSITION_VOLUME));
         TTLSell_position=PositionGetDouble(POSITION_VOLUME);
        }
     }

// Copy the bar close price for the previous bar prior to the current bar, that is Bar 1
   p_close=mrate[1].close;  // bar 1 close price
   


/*
    1. Check for a long/Buy Setup : k/d cross 20 
*/
//--- Declare bool type variables to hold our Buy Conditions
   bool Buy_Condition_1 = (K[0]>=D[0] && K[1]<=D[1]); // k>=D and K1<=D1
   bool Buy_Condition_2 = (K[1]<=20 && D[0]<=20); // k1<=20 and d<=20

   
//--- Check buy condition   
   if(Buy_Condition_1 && Buy_Condition_2)
     {
         Print("Buy-1:When buy OK, K0 is:",K[0]," D0 is:",D[0]," K1 is:",K[1]," D1 is:",D[1]);
 

Teşekkürler angevoyageur !

Bu değişkenlerin önbelleğini yazdırıyorum ve daha önce de söyledim, aynı mı, o zaman sinyal gönderilmesi gerekiyor ama K/D değeri yanlış ama bak program doğru mu, bu MQL5'te bir bug mı?

 
king1898 :

Teşekkürler angevoyageur !

Bu değişkenlerin önbelleğini yazdırıyorum ve daha önce de söyledim, aynı mı, o zaman sinyal gönderilmesi gerekiyor ama K/D değeri yanlış ama bak program doğru mu, bu MQL5'te bir bug mı?

Soru temel bir sorudur, aşağıdaki kısımda çubuk zamanını kontrol etmede bir sorun mu var?

 //--- Do we have enough bars to work with
   if ( Bars ( _Symbol , _Period )< 60 ) // if total bars is less than 60 bars
     {
       Alert ( "We have less than 60 bars, EA will now exit!!" );
       return ;
     }  

// We will use the static Old_Time variable to serve the bar time.
// At each OnTick execution we will check the current bar time with the saved one.
// If the bar time isn't equal to the saved time, it indicates that we have a new tick.

   static datetime Old_Time;
   datetime New_Time[ 1 ];
   bool IsNewBar= false ;

// copying the last bar time to the element New_Time[0]
   int copied= CopyTime ( _Symbol , _Period , 0 , 1 ,New_Time);
   if (copied> 0 ) // ok, the data has been copied successfully
     {
       if (Old_Time!=New_Time[ 0 ]) // if old time isn't equal to new bar time
        {
         IsNewBar= true ;   // if it isn't a first call, the new bar has appeared
         if ( MQL5InfoInteger ( MQL5_DEBUGGING )) Print ( "We have new bar here " ,New_Time[ 0 ], " old time was " ,Old_Time);
         Old_Time=New_Time[ 0 ];             // saving bar time
        }
     }
   else
     {
       Alert ( "Error in copying historical times data, error =" , GetLastError ());
       ResetLastError ();
       return ;
     }

//--- EA should only check for new trade if we have a new bar
   if (IsNewBar== false )
     {
       return ;
     }

//--- Do we have enough bars to work with
   int Mybars= Bars ( _Symbol , _Period );
   if (Mybars< 60 ) // if total bars is less than 60 bars
     {
       Alert ( "We have less than 60 bars, EA will now exit!!" );
       return ;
     }
 
king1898 :

Bu temel bir sorudur, bar zamanını kontrol etmede sorun mu var?

Kim bana yardım edebilir? Şimdiden teşekkürler!
 
king1898 :
Kim bana yardım edebilir? Şimdiden teşekkürler!

teşekkürler angevoyageur

Başka bir cevabınızı kontrol ettim, haklı olabilirsiniz: Evet, kapalı mumdaki sinyal daha iyidir, çünkü akımdaki sinyal yanlış sinyal olabilir. Açık mum üzerinde işlem yapan tüccarlar olmasına rağmen, muhtemelen bazı filtrelerle.

test etmeye çalışacağım!

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Göstergeler: Stokastik Osilatör

yenidijital , 2013.10.09 07:23

Stokastik ile Forex Trend Ticaret Girişlerini Belirleme

  • Yükseliş trendi, daha yüksek tepeler ve daha yüksek diplerden oluşur. Yatırımcılar, trenddeki bu düşük destek noktalarındaki girişleri ödüllendirmek için mükemmel risk bulmak için Stokastik'i kullanabilir.
  • Bir düşüş trendi, daha düşük tepeler ve daha düşük diplerden oluşur. Forex yatırımcıları, bu direnç yüksek noktalarında girişleri ödüllendirmek için mükemmel risk bulmak için Stokastik'i kullanabilir
  • Stokastik, bir forex yatırımcısını durakları sıkılaştırması, pozisyon boyutunu küçültmesi veya bir trend ticaretinde bir kez kar elde etmesi konusunda uyarmak için kullanılabilir.

Açık farkla, baskın günlük trend yönünde ticaret yapan tüccarlar, karşı trend ticareti yapanlardan daha yüksek bir başarı yüzdesine sahiptir. Forex piyasasının en büyük cazibe merkezlerinden biri, yatırımcılara girişlerini hassas bir şekilde zamanlamaları ve riski sınırlamak için koruyucu stoplar kullanmaları durumunda yüzlerce pip yapma potansiyeli sağlayan uzun trendler ile karakterize edilir.


Ancak Tüccarlar Maksimum Kazanç Riski ile Nereye Gireceklerini Nasıl Bulabilir?

"Trend sona erene kadar senin dostundur" mantrası birçok ticaret kitabında bulunabilir, ancak görünüşe göre birçok forex yatırımcısı trendi dostları haline getirmedi ve bazı durumlarda trend düşman haline geldi. Trende doğru bir şekilde girmiş olan tüccarlara verilen piplerin alıcı tarafında olmak yerine, birçok tüccar trendle savaşırken ticaretin “veren” tarafında olmuştur.

İnsanlar ideal eşleşmelerini bulmak için çevrimiçi flört hizmetlerine döndüklerinden, forex yatırımcıları, trendi tekrar arkadaşları haline getirmenin bir yolu olarak stokastiğe dönebilirler.


Günlük grafikte bir yükseliş trendinde, stokastik %K ve %D çizgileri yatay '20' referans çizgisinin altına hareket ediyor ve 20 çizgisinin üzerine geri dönüyor, kâr alma düzeltmesinin sona erdiğini gösteriyor. Stokastik çaprazlama da bize alıcıların piyasaya yeniden girmeye başladığını söylüyor. Ayrıca bu iyi bir desteğin olduğunu gösteriyor.

Stokastik Kullanarak Trendle Nasıl Ticaret Yapılır?

Sabır, trendle ticaret yapmaya çalışırken oyunun adıdır. Trende çok erken girmek, tüccarları büyük düşüşlere maruz bırakabilir. Çok geç girmek, salınım tamamlanmadan önce kar miktarını azaltır.

“Goldilocks” girişinin çok erken veya çok geç olmadığını bulmak için stokastik göstergesini kullanın. Güçlü bir yükseliş trendi bulunduğunda, 15, 5, 5 ayarlarıyla stokastiğin 20 yatay referans çizgisinin altındaki aşırı satım bölgesine geçmesini bekleyin. Ardından, %K ve %D çizgilerinin 20 çizgisinin üzerine çıkmasını bekleyin. Son düşük seviyenin birkaç pip altına yerleştirilmiş bir stop ile uzun girin. Durak boyutunun en az iki katı için bir sınır belirleyin.


Yükselen bir pozisyondayken, tüccarlar mümkün olduğunca fazla kâr elde etmeye çalışacaklardır. Tüccarlar genellikle açık pozisyonlarından kar alırlar veya stokastik aşırı alım bölgesine girdiğinde iz durur. Stokastik aşırı alım bölgesinde olsa bile bir forex döviz çiftinin yeni zirveler yapmaya devam edebileceğini unutmamak önemlidir.

Bir dahaki sefere bir trend gördüğünüzde ve onu nasıl “arkadaşınız” yapacağınızı bilmiyorsanız, bırakın stokastik gösterge sizi tanıştırsın! Bu dalgalanmalar stokastik tarafından vurgulandığında, durdurma yerleştirme de daha kolay hale gelir. Bir yükseliş trendindeki stokastik geçişler, girişlerinizi ana trende katılmak için belirlemenize yardımcı olabilir.


 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

İlginç bir şeyler

Sergey Golubev , 2016.03.28 14:13

Bu, yeni başlayanlar için çok iyi bir EA - nasıl çalıştığı hakkında Stokastik gösterge öğrenen tüccarlar için. EA, bu EA içinde olacak şekilde kodlanmış aşağıdaki parametrelerle Stokastik göstergenin aşırı alım/aşırı satım seviyelerinde işlem görmektedir:

  • Bu EA içinde kodlanmış Stokastik gösterge parametreleri : 5/3/3
  • EA'da kodlanacak aşırı alım/aşırı satım seviyeleri : 80/20
ea_Stochastic_system - MetaTrader 4 uzmanı
  • Danışman, Stokastik'in sahip olduğu göstergenin okumalarını analiz eder, satın alma sinyali, aşırı satım bölgesindeki ana ve sinyal gösterge çizgilerinin kesişimidir, satışların kesişimi için bir sinyal, aşırı alım bölgesindeki ana gösterge ve sinyal çizgileridir .

Kodlayıcı bu EA için set dosyası önerdi, bu yüzden bu EA'yı bu set dosyasına/parametrelerine göre EURUSD M15 zaman diliminde kullanabiliriz.

EA'yı sadece nasıl çalıştığını görmek için geriye dönük test ettim - lütfen geriye dönük test sonuçlarını ve aşırı alım/aşırı satım seviyeleri hakkında fikirler içeren bazı çizelgeleri bulun:






 

Merhaba

Son zamanlarda stokastik ile ilgili bir sorunla karşılaştım.

Kendi yazdığım bir EA ile ticaret yapıyorum. Satış için bir ticarete girme koşullarından biri, Stok Ana çubuk 1'de < Stok Sinyal Çubuğu 1'dir.

GBPUSD için ekteki dosyadan, 10:00'da Stoch Ana Çubuğu 1 > Stok Sinyal Çubuğu 1'in olduğunu görebiliriz, ancak satış için bir trdae açıktı.

Stochstic için kullandığım formül

double StochMain1T30 = iStochastic(NULL,30,10,10,3,MODE_EMA,0,MODE_MAIN,1); // T30 MODU_ANA

double StochSignal1T30 = iStochastic(NULL,30,10,10,3,MODE_EMA,0,MODE_SIGNAL,1); // T30 MODE_SİNYAL

Şüphelendiğim bir olasılık, yukarıdaki StochMain1T30 < StochSignal1T30'a dayanarak, ancak grafikte gördüğümüz bu değil.

Yukarıdakileri açıklamama yardımcı olabilir misiniz?

Broker olan Oanda'yı aradım, bana pozisyonun kendileri tarafından açık olmadığını ve EA tarafından açık olduğunu söylediler.

Teşekkür ederim.

Dosyalar:
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Nisan 2014'ü Okumak İlginç Bir Şey

Sergey Golubev , 2014.04.14 20:48

Stokastik Süreçler Teorisi: Finansal Matematik ve Risk Teorisi Uygulamaları ile



Bu kitap, finans, aktüeryal matematik, kuyruk teorisi ve risk teorisi dahil olmak üzere, stokastik süreçlerin modern teorisindeki tüm ana konuları ve uygulamalarını kapsayan bir alıştırmalar koleksiyonudur.

Bu kitabın amacı, okuyucuya, stokastik süreçler teorisindeki ve ilgili alanlardaki ana konuların daha derin anlaşılması için gerekli teorik ve pratik materyali sağlamaktır.

Kitap çeşitli konulara göre bölümlere ayrılmıştır. Her bölüm problemler, ipuçları, çözümler ve ayrıca problemleri çözmek için gerekli tüm materyalleri veren kendi kendine yeten bir teorik kısım içerir. Literatür referansları da verilmiştir.

Alıştırmalar çeşitli karmaşıklık seviyelerine sahiptir ve temel kavramlar ve teknikler üzerinde çalışan öğrenciler için yararlı olan basit alıştırmalardan, bazı önemli teorik gerçekleri ve yapıları ortaya çıkaran çok ileri düzey alıştırmalara kadar çeşitlilik gösterir.

Bu kitap, stokastik süreçler ve uygulamaları teorisindeki en büyük problem koleksiyonlarından biridir. Bu kitaptaki problemler, lisans ve yüksek lisans öğrencileri ile stokastik süreçler teorisi uzmanları için faydalı olabilir.


Neden: