分形的突破--图解 - 页 6

 

首先是关于那个托架

见此

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

//--------------------------------------//
//------------Money Management----------//
 if (Money.Management)
   {
      if (Risk<1 || Risk>1000)
      {
         Comment("Invalid Risk Value.");
         return(0);
      }
      else
      {
         Lots=MathFloor((AccountFreeMargin()*AccountLeverage()*Risk*pips2dbl*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 BarClose;
BarClose=Bid;

//---------------------------------------------------------//
//-----------------FRACTALS--------------------------------//
double fractalU=iFractals(NULL,Fractal_TF,1,Fractal_Buffer);
double fractalD=iFractals(NULL,Fractal_TF,2,Fractal_Buffer);
Print( "This Up Fractal is",fractalU,"Down Fractal is",fractalD);

//----------------PRCOESSING BUY---------------------------//
if(BarClose>EMA && BarClose== fractalU)
{
double SLB=Bid-StopLoss*pips2dbl;
double TPB=Bid+TakeProfit*pips2dbl;
int buy= OrderSend(Symbol(),0,Lots,Ask,Slippage*pips2points,0,0);
}

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

//---------PROCESSING SELL---------//
if(BarClose<EMA&&BarClose==fractalD)
{
double SLS=Ask+StopLoss*pips2dbl;
double TPS=Ask-TakeProfit*pips2dbl;

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

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




//----------------------------------------------//
//-----------------EXITING ORDERS---------------//

for(int i=OrdersTotal()-1; i>=0;i--)          <===HOW Can be here one trade in the loop if OrdersTotal() < 1 
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;

if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

double SL=OrderStopLoss();
bool result;
int  error;
//-----The Differnt Order types---//

if(OrderType()==OP_BUY)
{

  if(BreakEven>0)
  {
   
     if(Bid-OrderOpenPrice() >=BreakEven*pips2dbl)
     {
      
        if(OrderStopLoss() <OrderOpenPrice())
        {
         
          SL=OrderOpenPrice()+Point;
        }
     }
  }
}
                  
          

if(OrderType()==OP_SELL){

 if(BreakEven>0)
 {
  
    if(OrderOpenPrice()-Ask >= BreakEven*pips2dbl)
    {
     
       if(OrderStopLoss()>OrderOpenPrice())
       {
        
          SL=OrderOpenPrice() - Point;
    
       }
    }
  }
}


if(SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
         if(result!=TRUE) { error=GetLastError(); Print("ModifyError = ",OrderTicket(),"   ",error);}     
}
return(0);
}//THIS IS THE BRACKET FOR ORDERS OPEN CLOSE********************

我不认为你能解释我在这里指出的问题....。

 

关于fractals......,这个测试是做什么的?

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

做同样的事情,你会看到你必须选择什么栏来获得正确的分形栏

.

我们的分形总是在同一个柱子上吗?

 

我看到了关于。

如果没有交易,就不可能进入这个循环。我需要编写一个不同的订单会计部分。

for(int i=OrdersTotal()-1; i>=0;i--)          <===HOW Can be here one trade in the loop if OrdersTotal() < 1 
{

 
deVries:

关于fractals......,这个测试是做什么的?

做同样的事情,你会看到你必须选择什么栏来获得正确的分形栏

.

我们的分形总是在同一根柱子上吗?


是的,它总是在同一根柱子上,不管是分形 上升还是分形下降....。

 
//---------------FRACTAL INPUTS--------------------//
extern string Label6="===FRACTAL INPUTS===";
extern int    Fractal_Buffer=0;
extern int    Fractal_TF=0;


//--------Start Funcitons-------//
int start()
{

//-----------------FRACTALS--------------------------------//
double fractalU=iFractals(NULL,Fractal_TF,1,Fractal_Buffer);
double fractalD=iFractals(NULL,Fractal_TF,2,Fractal_Buffer);
Print( "This Up Fractal is",fractalU,"Down Fractal is",fractalD);

你的代码Fractal_Buffer= 0 ALLWAYS 0

我给出的测试表明,在Bar 0处从来没有一个分形可以找到。

做测试........ 学习

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

我很抱歉,我把我的发现deVries做得如此糟糕。


我已经进行了测试,是的,在第0条上从来没有一个分形

我知道你在做什么了,你想让我用for(loop)来寻找Y来代替Fractal_Buffer,因为它不应该总是被设置为=0。

 
ZacharyRC:

我很抱歉,我把我的发现deVries做得如此糟糕。


我已经进行了测试,是的,在第0条上从来没有一个分形。

我知道你在做什么了,你想让我用for(loop)来寻找Y来代替Fractal_Buffer,因为它不应该总是被设置为=0。




   double fractalU;
   for(int y=0;fractalU < Point;y++)
     {
      fractalU=iFractals(NULL,0,1,y);
     } 
     
double fractalD;
for(int x=0;fractalD< Point;x++)
 {
 fractalD=iFractals(NULL,0,2,x);
 }

 

我很难理解的是,在其他分形 代码下,EA仍在进行正确的交易,这是不正确的。

另外,移动一次止损,在我关闭时间过滤器时也没有发生,这也是不正确的。


我目前正在研究我的订单会计......但这本书让我很难对这些事情进行创意。


谢谢你强大的耐心!

 
AHHHH我不能因为这个而移动停止,哈哈哈,我很慢。
int total = OrdersTotal();
if(total<1)
{