for (int i=0; i<OrdersHistoryTotal(); i++)//对于所有订单 如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)
然后按神奇数字过滤
如果(OrderMagicNumber()==12)
滤波器满足了3个位置,但我只需要最后一个封闭的位置
想不出来如何只留下最后一个?
谢谢
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает номер бара закрытия последней позиции или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
datetime t;int i, k=OrdersHistoryTotal();
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
}
}
}
}
return(iBarShift(sy, tf, t, True));
}
if(Time[0]=='время_нужного_бара') //чтоб не засорять логи берем на конкретном баре - посмотрите на картинке, где именно ошибка
{
Print("переменная=", значение);
}
帮我解决一个问题
我对所有关闭的项目进行了抽查
for (int i=0; i<OrdersHistoryTotal(); i++)//对于所有订单
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)
然后按神奇数字过滤
如果(OrderMagicNumber()==12)
滤波器满足了3个位置,但我只需要最后一个封闭的位置
想不出来如何只留下最后一个?
谢谢
同样,非常需要。
帮我解决这个问题。
我是通过所有的平仓位 来选择的
for (int i=0; i<OrdersHistoryTotal(); i++)//对终端的所有订单
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)
事后按神奇数字过滤
如果(OrderMagicNumber()==12)
过滤器匹配3个位置,但我只需要最后一个关闭的位置。
想不出如何只留下最后一个?
谢谢
请帮助我们!我需要它在关闭旧的订单后,立即以Tp或SL价格开立一个订单。
#property copyright"Copyright © 2010, MetaQuotes Software Corp.
#属性链接 "http://www.metaquotes.net"
#property show_confirm
最大风险=3.extern int MaxRisk
外部 bool Buy=false; //用于打开一个买入订单。
extern bool Sell=true; //打开一个卖单。
在外部,MagicNumber=7749。
外部TP=210。
外部inttern SL=420。
{
double point=MarketInfo(Symbol(),MODE_POINT);//request Point
double Free=AccountFreeMargin()。
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot =MathFloor(Free*MaxRisk/100/One_Lot/Step)*Step;
int pos,total=OrdersTotal();
//----
如果(Buy==true && OrdersTotal()<=1)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point, "777"+ Symbol(), MagicNumber, 0, DarkGreen)。
购买=false。
}
如果(Sell==true && OrdersTotal()<=1)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point, "4949"+ Symbol(), MagicNumber, 0, DarkGreen)。
出售=false。
}
for (pos=0; pos<total; pos++)
如果(OrderSelect(pos,SELECT_BY_POS ) ==true)
如果(OrdersTotal()==OP_BUY)
如果(PRICE_CLOSE==OrderTakeProfit()) Buy=true;
if(PRICE_CLOSE==OrderStopLoss())卖出=true。
}
}
如果(OrderSelect(pos,SELECT_BY_POS ) ==true)
如果(OrdersTotal()==OP_SELL)
{
如果(PRICE_CLOSE==OrderStopLoss()) Buy=true;
if(PRICE_CLOSE==OrderTakeProfit()) 卖出=true。
}
} }
//----
return(0);
}
//+------------------------------------------------------------------+
伙计们,这里有一个问题,一个EA试图打开一个订单,但价格变化,显示错误的错误价格,我如何能绕过它,让它尝试买入,直到买入?
以前是这样的。
我加了30,因为我有一个5的标志,但它是无用的。
同样,非常需要。
帮我解决这个问题。
我正在抽查所有的封闭项目。
从最后开始,那么第一个匹配的就是那个人。
for (int i=OrdersHistoryTotal()-1;i>=0; i--)//
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ==true)
还有一个烦人的地方,有些部分只有平仓而没有反转,虽然止损和开新仓的条件是一样的。
这些情况可能发生,因为专家顾问中的买入和卖出条件并不相互排斥。尝试在测试器中追踪所需变量的值,根据
伙计们,这里有一个问题,一个EA试图打开一个订单,但价格变化,显示错误的错误价格,我如何能绕过它,让它尝试买入,直到买入?
以前是这样的。
我加了30,因为我有一个5的标志,但它是无用的。
这需要详细调查,这种情况可能出现,因为EA中的买入和卖出开仓条件并不相互排斥。试着在测试器中沿着以下思路追踪所需变量的值
与你的问题有关的内容用下划线表示。