Fraktal Kopma-Sıkışmış

 

Hey Millet,


Günün saati ve hareketli bir ortalama ile filtrelenen bir fraktal koparma EA yapmaya çalışıyorum.


Biri beni doğru yöne işaret edebilir/koddaki kusurları gözden geçirebilir mi ???


1: Yalnızca iFractal() girdikten sonra satın alma alıyor

2: Fraktalların olduğu yere girmez.

 //+------------------------------------------------------------------+
//|                                                    Simple EA.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//Literally copying Ferrus Format to a tee

extern string Label1= "===General Trade Settings===" ;
extern int    TakeProfit= 25 ;
extern int     StopLoss= 10 ;
extern int     TrailingStop= 0 ;
extern int     Slippage= 2 ;
extern double   Lots= 0.1 ;
//---------Time Filter--------//

//-----------Money Managerment---------//
extern bool Money.Management= true ;
extern double Risk= 1 ;


//----------------------Moving Average-----//
extern string Label5= "===Moving Average Settings===" ;
extern int     MA_Period= 200 ;
extern int     MA_Shift= 0 ;
extern int     MA_Type= 1 ;
extern int     MA_Price= 0 ;
//----------


//-------Initialize EA Orders Accounting-----//


int start()
{

int mypoint;

if ( Digits == 3 || Digits == 5 ){ mypoint= 10 ;}
else {mypoint= 1 ;}


//------------Orders Accounting---------//

 int total = OrdersTotal ();
if (total< 1 )
{
//------------Money Management----------//

//Money Management sequence
 if (Money.Management)
   {
       if (Risk< 1 || Risk> 1000 )
      {
         Comment ( "Invalid Risk Value." );
         return ( 0 );
      }
       else
      {
         Lots= MathFloor ((AccountFreeMargin()*AccountLeverage()*Risk* Point *mypoint* 100 )/(Ask*MarketInfo( Symbol (),MODE_LOTSIZE)*MarketInfo( Symbol (),MODE_MINLOT)))*MarketInfo( Symbol (),MODE_MINLOT);
      }
   }

//-------------EMA SETTINGS-----------------//
//
//------------------------------------------//
double EMA= iMA ( NULL , 0 ,MA_Period,MA_Shift,MA_Type,MA_Price, 0 );
double BarCloseB;
double BarCloseS;
BarCloseB=Bid;
BarCloseS=Ask;
//----Processing a buy---------//
//


double fractalU= iFractals ( NULL , 0 , 1 , 0 );
double fractalD= iFractals ( NULL , 0 , 2 , 0 );



//-----------------------------//
if ((BarCloseB>EMA) && (BarCloseB>=fractalU))
{
double SLB=Bid-StopLoss* Point *mypoint;
double TPB=Bid+TakeProfit* Point *mypoint;
int buy= OrderSend ( Symbol (), 0 ,Lots,Ask,Slippage, 0 , 0 );
}

if (buy> 0 ) 
{
OrderSelect (buy,SELECT_BY_TICKET,MODE_TRADES);
OrderModify(buy,OrderOpenPrice(),SLB,TPB, 0 ,Green);
}
//---------Processing a sell---------//
//
//-----------------------------------//
if ((BarCloseS<EMA)&&(BarCloseS<=fractalD))
{
double SLS=Ask+StopLoss* Point *mypoint;
double TPS=Ask-TakeProfit* Point *mypoint;

int sell= OrderSend ( Symbol (), 1 ,Lots,Bid,Slippage, 0 , 0 );
}

if (sell> 0 )
{
OrderSelect (sell,SELECT_BY_TICKET,MODE_TRADES);
OrderModify(sell,OrderOpenPrice(),SLS,TPB, 0 ,Green);
}

Print ( GetLastError ());
return ( 0 );
}
}
 
fraktal

Çıkmak ??

 double fractalU= iFractals ( NULL , 0 , 1 , 0 );     //What if you had chosen for bar 1  ??
double fractalD= iFractals ( NULL , 0 , 2 , 0 );             //then i think you will get sell trades also

yenisini açmadan önce işlemlerinizi sayın....

ve daha fazla hata ama önce bunu deneyin


 
deVries :
fraktal

Çıkmak ??

yenisini açmadan önce işlemlerinizi sayın....

ve daha fazla hata ama önce bunu deneyin



Hey deVries,


Bu açıklamayı anlamakta güçlük çekiyorum. Benim iki paket servisim şunlardı:


1) İlk çubuğu seçmemi ister misin?

2) Siparişlerimi Yeniden Yap


Desteğiniz için tekrar teşekkür ederim.

 
ZacharyRC :

Hey deVries,


Bu açıklamayı anlamakta güçlük çekiyorum. Benim iki paket servisim şunlardı:


1) İlk çubuğu seçmemi ister misin?

2) Siparişlerimi Yeniden Yap


Desteğiniz için tekrar teşekkür ederim.


 double fractalU= iFractals ( NULL , 0 , 1 , 0 );

döner bir sonraki mesajıma bakın .....

 double fractalU= iFractals ( NULL , 0 , 1 , 1 );

döner bir sonraki mesajıma bakın......

sipariş sayın gibi

 int total = OrdersTotal ();
if (total< 1 )
{
 

Bu EA'dan açık veya beklemede olmayan başka bir işleminiz varsa, herhangi bir siparişin açılmasına izin vermeyecektir.

backtesting ile bunu görmeyeceksiniz, ancak EA'yı bir hesapta çalıştırdığınızda fark edeceksiniz.

 

Frctal kodunuz üzerinde küçük bir test yaptım

bunun gibi

   double fractalU;
   for ( int y= 0 ;fractalU < Point ;y++)
     {
      fractalU= iFractals ( NULL , 0 , 1 ,y);
       Alert ( "fractalUp  y =  " +y+ " " +fractalU);
     }

Aynısını yapın ve doğru fraktal çubuğu elde etmek için hangi çubuğu seçmeniz gerektiğini göreceksiniz.

 
deVries :

Frctal kodunuz üzerinde küçük bir test yaptım

bunun gibi

Aynısını yapın ve doğru fraktal çubuğu elde etmek için hangi çubuğu seçmeniz gerektiğini göreceksiniz.


Merhaba deVries!



Kesinlikle yardımsever bir adamsın!

 
deVries :

Frctal kodunuz üzerinde küçük bir test yaptım

bunun gibi

Aynısını yapın ve doğru fraktal çubuğu elde etmek için hangi çubuğu seçmeniz gerektiğini göreceksiniz.


Hımm...


deVries, çek mükemmel çalıştı ve her "aşağı" fraktal ve "yukarı" fraktal için doğru fiyatı uyardı.


Siparişi işlerken fraktalları "yok saydığından" hala koddaki hataları araştırıyorum.


Haklısın, OrdersAccounting bölümlerini değiştirmem gerekiyor, çünkü EA'yı grafiğe koyar koymaz bir ticaret alır.

 
deVries :

Frctal kodunuz üzerinde küçük bir test yaptım

bunun gibi

Aynısını yapın ve doğru fraktal çubuğu elde etmek için hangi çubuğu seçmeniz gerektiğini göreceksiniz.


APTAL BENİ!


Kodu araştırdıktan sonra, arabelleğin sorunlara neden olmasına neden olan == yerine => kullanıyordum.


Teşekkürler deVries!!!!

 
ZacharyRC :

APTAL BENİ!


Kodu araştırdıktan sonra, arabelleğin sorunlara neden olmasına neden olan == yerine => kullanıyordum.


Teşekkürler deVries!!!!

Diyorsun ki......
 if ((BarCloseB>EMA) && (BarCloseB>=fractalU))
olarak değiştirildi
 if ((BarCloseB>EMA) && (BarCloseB==fractalU))

şimdi bu şekilde ???? bu da doğru olmayacak

.

Bunun gibi bir şey

 if ((BarCloseB>EMA) && (BarCloseB>fractalU)&& fractalU> Point )

sizin için çalışabilir ve testte yapıldığını gördüğünüz şekilde fraktalU elde edebilir ...

 
deVries :
Diyorsun ki......
olarak değiştirildi

şimdi bu şekilde ???? bu da doğru olmayacak

.

Bunun gibi bir şey

sizin için çalışabilir ve testte yapıldığını gördüğünüz şekilde fraktalU elde edebilir ...


Girişinizi uygulamadım çünkü şu anda doğru bir şekilde işlem görüyor. Sizin katkılarınızla bu akşam deneyeceğim.



Teşekkürler deVries!

 

Hey deVries:


Bu kadar çok pipten sonra başabaş noktasına bir değişiklik durdurma kaybı koymaya çalışırken, son kodumda sorunlarla karşılaşıyorum.


Göze batan bir hata görüyor musunuz???

 extern int     StopLoss= 10 ;

//-------------------------------------------------//
extern bool Move.BE= true ;
extern int   MoveStopTo= 1 ;



//----------------------------------------------//
//-----------------EXITING ORDERS---------------//
if ( OrdersTotal ()> 1 )
{
OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES);
if (OrderType()==(OP_BUY)&&(Move.BE))
{
if (Bid - OrderOpenPrice() >= Point * StopLoss)
 {
     if (OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo)
     {
     OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0 , Red);
}
}
}
}

if ( OrdersTotal ()> 1 )
{
OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES);
{
 if (OrderType()==(OP_SELL)&&(Move.BE))
 {     
          
if (OrderOpenPrice() - Ask >= Point * StopLoss) 
 {
     if (OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) 
     {
      OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0 , Red);
}
}
}
}
//--------CHECKING FOR ERRORS-------------------//
Print ( GetLastError ());
return ( 0 );
}
}