프랙탈 브레이크 아웃 멈춤

 

얘들 아,


시간과 이동 평균으로 필터링되는 프랙탈 브레이크아웃 EA를 만들려고 합니다.


누구든지 올바른 방향으로 나를 가리킬 수 있거나 코드의 결함을 검토 할 수 있습니까 ???


1: iFractal()을 입력한 후에만 매수를 받습니다.

2: 프랙탈이 있는 곳에 들어가지 않습니다.

 //+------------------------------------------------------------------+
//|                                                    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 );
}
}
 
프랙탈

브레이크 아웃 ??

 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

새 거래를 열기 전에 거래를 계산하십시오....

더 많은 오류가 있지만 먼저 시도하십시오.


 
deVries :
프랙탈

브레이크 아웃 ??

새 거래를 열기 전에 거래를 계산하십시오....

더 많은 오류가 있지만 먼저 시도하십시오.



안녕하세요, deVries


나는 그 말을 이해하는 데 어려움을 겪고 있다. 내 두 가지 테이크 아웃은 다음과 같습니다.


1) 첫 번째 막대를 선택하시겠습니까?

2) 내 주문 다시 실행회계


귀하의 지원에 다시 한 번 감사드립니다.

 
ZacharyRC :

안녕하세요, deVries


나는 그 말을 이해하는 데 어려움을 겪고 있습니다. 내 두 가지 테이크 아웃은 다음과 같습니다.


1) 첫 번째 막대를 선택하시겠습니까?

2) 내 주문 다시 실행회계


귀하의 지원에 다시 한 번 감사드립니다.


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

반품은 내 다음 게시물을 참조하십시오 .....

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

반품은 내 다음 게시물을 참조하십시오 ......

당신의 주문 계산

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

이 EA에서 열리지 않거나 보류 중인 다른 거래가 있는 경우 주문이 열리지 않는 상황이 발생합니다.

백 테스팅 을 사용하면 그것을 볼 수 없지만 계정에서 EA를 실행하면 알 수 있습니다.

 

frctal 코드에 대한 약간의 테스트를 했습니다.

이와 같이

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

동일한 작업을 수행하면 올바른 프랙탈바를 얻기 위해 어떤 막대를 선택해야 하는지 알 수 있습니다.

 
deVries :

frctal 코드에 대한 약간의 테스트를 했습니다.

이와 같이

동일한 작업을 수행하면 올바른 프랙탈바를 얻기 위해 어떤 막대를 선택해야 하는지 알 수 있습니다.


안녕하세요 드브리즈입니다!



당신은 확실히 도움이되는 사람입니다!

 
deVries :

frctal 코드에 대한 약간의 테스트를 했습니다.

이와 같이

동일한 작업을 수행하면 올바른 프랙탈바를 얻기 위해 어떤 막대를 선택해야 하는지 알 수 있습니다.


흠...


deVries, 수표는 완벽하게 작동했고 각 "다운" 프랙탈 과 "업" 프랙탈에 대한 정확한 가격을 알렸습니다.


주문을 처리할 때 도형을 "무시"하기 때문에 오류 코드를 계속 조사하고 있습니다.


맞습니다. EA를 차트에 올리자마자 거래가 필요하기 때문에 OrdersAccounting 섹션을 변경해야 합니다.

 
deVries :

frctal 코드에 대한 약간의 테스트를 했습니다.

이와 같이

동일한 작업을 수행하면 올바른 프랙탈바를 얻기 위해 어떤 막대를 선택해야 하는지 알 수 있습니다.


바보 나!


코드를 조사한 후 == 대신 =>를 사용하여 버퍼에 문제가 발생했습니다.


고마워요 deVries!!!!

 
ZacharyRC :

바보 나!


코드를 조사한 후 == 대신 =>를 사용하여 버퍼에 문제가 발생했습니다.


감사합니다 deVries!!!!

네 말 뜻은......
 if ((BarCloseB>EMA) && (BarCloseB>=fractalU))
로 변경
 if ((BarCloseB>EMA) && (BarCloseB==fractalU))

지금 이렇게???? 그것도 옳지 않을 것이다

.

이 같은

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

당신을 위해 일하고 테스트에서 완료되는 방식으로 fractalU를 얻을 수 있습니다 ...

 
deVries :
네 말 뜻은......
로 변경

지금 이렇게???? 그것도 옳지 않을 것이다

.

이 같은

당신을 위해 일하고 테스트에서 완료되는 방식으로 fractalU를 얻을 수 있습니다 ...


현재 올바르게 거래되고 있기 때문에 귀하의 입력을 구현하지 않았습니다. 오늘 밤 나중에 귀하의 의견으로 시도해 보겠습니다.



deVries 감사합니다!

 

안녕 드브리스:


너무 많은 핍 후에 손익분기점에 수정 정지 손실 을 넣으려고 하여 최종 코드에서 문제가 발생했습니다.


눈부신 오류가 보이시나요???

 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 );
}
}