如何编码? - 页 153

 
Roger09:
chiwing

试试这个。

#property copyright "Copyright ?2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

#property show_inputs

bool result;

extern double OverSymbolDel = 1; //0:FASLE ; 1: TRUE

//+------------------------------------------------------------------+

//| script "delete pending order" |

//+------------------------------------------------------------------+

int start()

{

for (int number=OrdersTotal()-1; number >= 0; number--)

{

OrderSelect(number,SELECT_BY_POS,MODE_TRADES);

if((OrderType()==OP_BUY) || (OrderType()==OP_SELL) ) continue;

if (OverSymbolDel ==0&& Symbol()==OrderSymbol() ) delPending();

if (OverSymbolDel ==1) delPending();

}

}

//+------------------------------------------------------------------+

void delPending()

{

OrderPrint();

int ticket =OrderTicket();

result=OrderDelete(ticket);

if (!result) Print("Error when delete Order ", GetLastError() );

}

如果 ( (OverSymbolDel ==0 ) && ( Symbol()==OrderSymbol() ) delPending()。

改为

if ( (OverSymbolDel ==0 ) && ( Symbol()==OrderSymbol() )) delPending()。

 

GetClientRect?

虽然我想获得图表的客户端坐标,但我应该怎么做?

我想知道右下角的坐标,而不使用OBJPROP_CORNER。

致以最诚挚的问候。

 

Эранский

请帮助我修改最好的一个

附加的文件:
 

逻辑学方面的帮助

大家好。

我想在一些代码逻辑方面得到一点帮助。我正试图建立一个我所关注的系统的EA,但对如何编写买入和卖出信号 的逻辑有点不解。以下是我想转为MQL的伪逻辑。

买入逻辑。

If (MA_1 > MA_2) and (Previous(MA_1 < MA_2)) // A moving average cross mean we have a "GET READY" signal

// Once we have a "GET READY" signal the following conditions need to be true

// in order for the system to create a "BUY_SIGNAL".

// Note: the following conditions do not necessarily have to become true on the exact same bar,

but need to trigger true within + or - 2 bars of the "GET READY" bar.

( CLOSE > MA3 ) // Price closes above a MA

( CCI Crosses above the ZERO line ) // CCI crosses up above zero

( Fast Stochastic crosses above Slow Stochastic ) // Stochastic triggers to the up side

卖出逻辑与买入逻辑正好相反。

我不需要完整的EA代码,只需要将逻辑转换成MQL的'IF'和'LOOP'语句来锻炼信号。我想我可以从这个主题的许多例子中找出OpenOrder代码等。

如果有人能给予任何帮助,我将非常感激。

谢谢。

莫克西

 

你最好的选择是查看元编辑器的帮助文件。

看一下iMa、iStochastic和iCCI等函数。它们有例子,如果你把这些例子与你从任何EA的代码中得到的信息结合起来,你会发现它很容易。

好运

卢克斯

 
luxinterior:
你最好的选择是查看元编辑器的帮助文件。

看一下iMa、iStochastic和iCCI等函数。他们有一些例子,如果你把这些例子与你从任何EA的代码中得到的信息结合起来,你会发现它很容易。

好运

卢克斯

嗨,拉克斯。

谢谢你的回答。我可以解决个别的iMA语句等......我遇到的问题是,一旦信号被触发,如何引用不同的时间条。例如...如果我有一个GET READY信号,我需要查看其他指标的前2条和后2条(共5条),以确认我在下一个柱子的开盘时有一个买入 信号。我不知道我说的是否有道理!

我想是的......当我需要参考被处理的条形图之前和之后的条形图时,我将如何构建必要的FOR循环等。

谢谢。

莫克西

 
Moxy:
嗨,拉克斯。

谢谢你的回答。我可以解决个别iMA语句等......我的问题是,一旦信号被触发,如何引用不同的时间条。例如...如果我有一个GET READY信号,我需要查看其他指标的前2条和后2条(共5条),以确认我在下一个柱子的开盘时有一个买入信号。我不知道我说的是否有道理!

我想是的......当我需要参考被处理的条形图之前和之后的条形图时,我将如何构建必要的FOR循环等。

请注意。

莫克西

你可以通过使用iMA()中的shift变量来做到这一点。你也可以用开盘价、最高价、最低价、收盘价来做,即收盘价[3]与当前条形的距离为3条。

 

移动平均数的移动

好吧,我需要一些代码方面的帮助,我想确定一组围绕MA的平均移动,所以从最古老的BAR,我寻找上面和下面的移动,把它们放入一个数组,然后对这个数组进行平均。

以下是我开始使用的代码,希望能得到一点帮助,以完成它。

double AverageMove()

{

int cbars = iBars(Symbol(),EntryTimeFrame);

int counted_bars = 0,RangeCounter=0,ndx=0,iLimit=0。

双重retval,averagemove,pHValue,pLValue,MAvalue,RangeValue[],EntryPoint,cHigh,cLow。

bool reset,TradeShort,TradeLong;

iLimit=Bars-1;

if(Symbol() != "AUDNZD") return(0);

for(ndx=0; ndx<iLimit; ndx++)

{

MAvalue = iMA(Symbol(),EntryTimeFrame,EntryMAInterval,0,MovingAverageType,PRICE_MEDIAN,ndx) 。

pH值=High[ndx]。

pLValue = Low[ndx]。

如果(MAvalue pLValue)

{

if(Symbol() =="AUDNZD") Print("MAValue="+MAvalue+" pHValue="+pHValue+" plValue="+pLValue);

reset = true;

如果(EntryPoint > 0 && cHigh > 0)

{

RangeCounter++;

RangeValue[RangeCounter]=cHHigh - EntryPoint。

}

如果(EntryPoint > 0 && cLow > 0)

{

RangeCounter++;

RangeValue[RangeCounter]=EntryPoint - cLow。

}

EntryPoint = MAvalue。

}

if(pHValue < MAvalue && reset) TradeShort = true;

if(pLValue > MAvalue && reset) TradeLong = true;

如果(TradeLong)

{

reset = false;

cHigh = pHValue。

}

如果(TradeShort)

{

reset = False;

cLow = pLValue;

}

}

ArraySetAsSeries(RangeValue,true)。

retval=iMAOnArray(RangeValue,RangeCounter,13,1,PRICE_MEDIAN,0)。

打印("平均移动 "+retval)。

}

 

我想知道图表中的客户区域。

尊敬的先生。

我想知道图表中的客户区域。

请告诉我。

假设左上角的点是(0,0),请让我知道右下角的坐标。

在这种情况下,不应该使用ObjectSet("",OBJPROP_CORNER,3)。

谢谢你,并致以最诚挚的问候。

 

莫克西。

如果我对你的理解正确,那么你必须在EA中逐行编码。

例如

MA1, index-1 之前

MA1, index now

MA1, index+1之后

你有基本的东西