//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfPositions(string sy="",int op=-1,int mn=-1){int i, k=OrdersTotal(), kp=0;if( sy=="0") sy=Symbol();for( i=0; i< k; i++){if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()== sy || sy==""){if(OrderType()==OP_BUY||OrderType()==OP_SELL){if( op<0||OrderType()== op){if( mn<0||OrderMagicNumber()== mn) kp++;}}}}}return( kp);}
如果你知道,有两条线,一条跟着一系列蜡烛图中的新高点,另一条跟着低点。当线与线之间的距离超过50时,应画一条垂直线。垂直线需要一个坐标--时间。当线与线之间的距离将超过50时,我怎样才能画出时间?我什么都想不出来。
我想用ObjectCreate 来绘制垂直线...如果可以不用时间,应该用什么来做?能否有一个功能可以简单地检测出 "在EA历史上还没有订单"?- 那就足够了。
我不知道。也许这里有人能告诉我们?
我认为我们应该尝试修改金的功能。这一个。
也就是说,不采取MODE_TRADES,而采取MODE_HISTORY - 即在已关闭和已删除的订单中选择该订单。
然后(改变f-i的名称)。
试试吧,--到底行不行?
下午好,朋友们。
请告诉我这个问题。
例如,我需要在 "价格蜡烛 "越过移动平均线 时开立一个头寸。
到目前为止,我只知道当蜡烛图在移动平均线上方/下方收盘/开盘时如何对信号进行分类...
( iMA( .....) >Close[1] 或 iMA( ....) >Open[0] )
如果当前的蜡烛图已经在MA之上/之下,我怎样才能进入,而不是等待当前的蜡烛图关闭,下一个蜡烛图打开,如果它已经在MA之上/之下?
事先非常感谢你。
下午好,朋友们。
请告诉我这个问题。
例如,我需要在 "价格蜡烛 "越过移动平均线时开立一个头寸。
到目前为止,我只知道当蜡烛图在移动平均线上方/下方收盘/开盘时如何对信号进行分类...
( iMA( .....) >Close[1] 或 iMA( ....) >Open[0] )
如果当前的蜡烛图已经在MA之上/之下,我怎样才能进入,而不是等待当前的蜡烛图关闭,下一个蜡烛图打开,如果它已经在MA之上/之下?
我不知道该如何处理它。
你喜欢它吗?
iMA(....) >Open[0] ?- 零是当前的蜡烛。
有什么不喜欢的。
iMA(....) >Open[0] ?- 零是当前的蜡烛图
这是真的,但是,举例来说,有些情况下,在MA下开盘后,价格随后(通常是在新闻中)以长阳线突破MA,并上升了,....。
如果我们使用我的开局标准,我们可能会错过这样的动作......
因此,我想在当前价格高于/低于平均线的情况下开仓,而不是等待这根蜡烛收盘和下一根蜡烛开盘。
这可能是:
(如果前一交易日的MA值大于前一交易日的收盘价,并且当前交易日的MA值小于当前交易日的开盘价,那么就卖出。)
我已经捣鼓了两天了,也没能弄明白。我从科瓦廖夫的教程中提取了代码,试图开立一个买入订单,得到的答案是 "错误130"。
编码
nt f_Open_Ord(int Tip)
{
int Ticket, // Order number
MN; // MagicNumber
double SL, // StopLoss (相对价格值)
TP; // TakeProf (相对价格值)
//--------------------------------------------------------------- 3 --
while(g_Mas_Tip[Tip]==0) // As long as .
{ //...没有成功
if (SL<g_Level_new) //如果小于允许的范围...
SL=(g_Level_new+20); // ... 然后允许
if (TP<g_Level_new)
// 如果小于允许值...
TP=(g_Level_new+20); // .则允许
MN=TimeCurrent(); // Simple MagicNumber
f_Inform(13,Tip); // Message on attempt to open
if (Tip=0) // Let's open Buy
{
SL=Bid - SL*Point;// 止损(价格)
SL=NormalizeDouble(SL,Digits);
TP=Bid + TP*Point; // 止盈(价格)
TP=NormalizeDouble(TP,Digits);
Ticket=OrderSend(Symbol(),0,g_Lots_New,Ask,5,1.46500,1.47500,",MN);
err=GetLastError();
Comment("错误号码",err);
if (Ticket>0) f_Inform(4);
//if (Ticket<0) f_Inform(25)
代码重做了。一切工作正常。我认为错误不在代码中。DC-Broco/。
索里,这太仓促了。OrderSend函数 中的数值1.46500和1.47500应分别改为SL和TP。
索里,这太仓促了。OrderSend函数中的数值1.46500和1.47500必须分别用SL和TP来代替。
SL和TP等于什么?如果它是零,就像上面的代码一样,一切都正确。应该产生一个错误
止损点取自全局变量 g_Level_new,其计算方法为g_Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL )