externint TakeProfit = 150;
externdouble Lot = 0.01;
externint MAGIC=1234;
//=====================================================================int start()
{
if (DistMarketAndPos(NULL,OP_BUY)>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point);
}
if (DistMarketAndPos(NULL,OP_SELL)>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);
}
return(0);
}
//======================================================================== //+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает расстояние в пунктах между рынком и ближайшей |//| позицей |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
double d, p;
int i, k=OrdersTotal(), r=1000000;
if (sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
if (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL) {
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
if (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
return(r);
}
DistMarketAndPos()函数。
我们来了!更多有趣的功能来了!例如,它返回市场和最近的位置之间的距离,单位是点。更准确地选择要检查的位置是由外部参数设定的。
DistMarketAndPos()函数。
我们来了!让我们去看看更多有趣的功能吧!例如,它返回市场和最近的位置之间的距离,单位是点。更准确地选择要检查的位置是由外部参数设定的。
我试着让它来回工作,来回开单。 我有一个错误,请帮助我解决它。
外置 int TakeProfit = 150;
外来的双数Lot = 0.01。
外部inttern MAGIC = 1234。
int start()
{
如果(DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point)
}
return(0);
}
int DistMarketAndPos(string sy="", int op=OP_BUY, int mn=-)
{
双D,P。
int i, k=OrdersTotal(), r=1000000;
如果(sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT)。
如果(p==0)如果(StringFind(sy, "")<0)p=0.00001;否则p=0.01。
for (i=0; i<k; i++)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
如果((OrderSymbol()==sy)&& (op<0 || OrderType()==op))
{
如果(mn<0 || OrderMagicNumber()==mn)
{
如果(OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p。
如果(r>d)r=NormalizeDouble(d,0)。
}
如果(OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p。
如果(r>d)r=NormalizeDouble(d,0)。
}
}
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------
如果(DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point)。
}
return(0);
{
int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //这一行给出了一个错误。
//如果这一行被删除。
//它编译了,但随后
//我不把op=OP_SELL。
//而没有它,专家顾问会认为。
//你要计算的顺序是什么?
//距离是OP_BUY
如果(sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT)。
如果(p==0)如果(StringFind(sy, "")<0)p=0.00001;否则p=0.01。
for (i=0; i<k; i++)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
如果((OrderSymbol()==sy)&& (op<0 || OrderType()==op))
{
如果(mn<0 || OrderMagicNumber()==mn)
{
如果(OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p。
如果(r>d)r=NormalizeDouble(d,0)。
}
如果(OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p。
如果(r>d)r=NormalizeDouble(d,0)。
}
}
}
}
}
return(r)。
return(r)。
}
}
//-------------------------------------------------------------------------------------------
谢谢你
我正在努力使它来回工作,用它来回开单。 我有一个无法摆脱的错误,请帮助我解决。
谢谢你
你应该试试。
并在此 提出问题......。
MovingInWL()函数。
谁能解释一下,为什么你要发布不起作用的功能?
'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
6 错误, 0 警告.
而这是在函数本身中
谁能解释一下,为什么你要发布不起作用的功能?
'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
'LevelWLoss' - 未声明的标识符
'LevelProfit' - 未声明的标识符
'ModifyOrder' - 未定义的函数
6 错误, 0 警告.
而这是在函数本身里面
该函数可以工作,但是它调用了 ModifyOrder函数,该函数应该被添加到EA代码中,同时在EA中添加变量LevelWLoss和LevelProfit,类似这样
外来的int LevelProfit = 1000。
外部int LevelWLoss = 50;
非常感谢你的这个论坛主题。最大的感谢是lurii Tokman提供的功能。就我个人而言,我几乎准备将其等同于斯特鲁斯特鲁普。
谢谢你!
GetAmountLotFromOpenPos()函数。
该函数返回未结头寸的手数之和。要考虑的位置的更精确选择是由外部参数指定的。
不返回!!!。
无论我怎么做,要么是零,要么是 "未找到事件处理函数 4.mq4 1 1
"
非常感谢你的这个论坛主题。最大的感谢是lurii Tokman提供的功能。就个人而言,我几乎准备将他等同于斯特鲁斯特鲁普。
谢谢你!