if (OrdersTotal()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(SELECT_BY_POS,MODE_TRADES)
{ if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUYLIMIT) return(0);
} } }
if (OrdersTotal()>0)
{ for (i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{ if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{ for (int j=0; j=10-1; j++}
{ OrderSend (Symbol(),OP_BUYLIMIT,Lot,price[j],10,0,Ask+g*Point,"My order #",11+j);
Sleep(10*1000);
} } }
} }
externdouble Lot=1;
int g=20; //тейкпрофитdouble price[10]; // Заданный уровень //-----------------------int init()
{
double price[10]; // объявляем массив из 5 элементов
price[0] = 1.2100; // обращаемся к первому элементу массива и // присваиваем ему цену. Обратите внимание // на то, что индекс первого элемента // начинается с 0. Это важная особенность,// к которой нужно привыкнуть.
price[1] = 1.2200; // обращаемся ко второму элементу
price[2] = 1.2300; // и так далее
price[3] = 1.2400;
price[4] = 1.2500;
price[5] = 1.2600;
price[6] = 1.2700;
price[7] = 1.2800;
price[8] = 1.2900;
price[9] = 1.3000;
return(0);
}
//---------------int start()
{
// начало открытия ордеров if (OrdersTotal()>0)return(0);
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
{
price[0]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[1]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[2]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2300,10,0,Ask+g*Point,"My order #",13);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[3]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2400,10,0,Ask+g*Point,"My order #",14);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[4]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2500,10,0,Ask+g*Point,"My order #",15);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[5]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2600,10,0,Ask+g*Point,"My order #",16);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[6]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2700,10,0,Ask+g*Point,"My order #",17);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[7]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2800,10,0,Ask+g*Point,"My order #",18);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[8]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2900,10,0,Ask+g*Point,"My order #",19);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[9]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.3000,10,0,Ask+g*Point,"My order #",20);return;
}
return(0);
}
//+------------------------------------------------------------------+
externdouble Lot=1;
int g=20; //тейкпрофитdouble price[5]; // Заданный уровень //-----------------------int init()
{
double price[]={1.2100,1.2200,1.2300,1.2400,1.2500}; // объявляем массив из 5 элементов return(0);
}
//---------------int start()
{
// начало открытия ордеров if (OrdersTotal()>0)return(0);
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
{
price[0]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[1]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[2]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2300,10,0,Ask+g*Point,"My order #",13);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[3]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2400,10,0,Ask+g*Point,"My order #",14);return;
}
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
{
price[4]=Ask;
OrderSend (Symbol(),OP_BUY,Lot,1.2500,10,0,Ask+g*Point,"My order #",15);return;
}
if (OrdersTotal()>0)
{
for (int i=OrdersTotal()-1;i>=0;i--)
{
if (OrderSelect(SELECT_BY_POS,MODE_TRADES)
{
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUYLIMIT) return(0);
}
}
}
if (OrdersTotal()>0)
{
for (i=OrdersTotal()-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{
for (int j=0;j=5-1;j++}
{
OrderSend (Symbol(),OP_BUYLIMIT,Lot,price[j],10,0,Ask+g*Point,"My order #",11+j);
Sleep(10*1000);
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
开头的大括号{应该放在price[...]=Ask;之前(见下文)。再次阅读关于 "如果 "操作符。如果在if后面没有括号,它只处理一个动作(你有price[...]=Ask;),如果需要几个动作,必须在if后面紧紧地 把它们放在{...}中。
但它没有改变任何东西。 请看截图--它显示EA开了一个买入头寸
价格下跌并越过了1.2100和1.2200的水平,操作者的头寸。
如果在1.2100和1.2200开设买入头寸--没有开设。
谢谢,但我按照你的建议,在if语句后面加了括号。
但它没有改变任何东西。 请看屏幕截图--它显示专家顾问开了一个买入头寸
价格下跌并越过了1.2100和1.2200的水平,操作者条件的头寸。
如果在1.2100和1.2200开设买入头寸--没有开设。
谢谢,但我按照你的建议,在if语句后面加了括号, ,但这并没有改变什么。见截图--它显示EA开了一个买入头寸, ,价格下跌,越过了1.2100和1.2200水平,并根据语句进行了操作, 。
如果要在1.2100和1.2200开设买入头寸--他们没有开设。
我们不应该在ordersend后面加上return操作符来结束tick处理吗?
谢谢你,我在ordersend后面加了return operator,但没有变化。
你是手动开立第一个头寸,还是想让挂单 在价格达到一定水平时开立,然后再根据它来开立? 试试下面的方法:。当然,我们需要更多的错误处理,以防挂单被DC拒绝。
如果价格达到一定水平,然后在订单中定义的水平上开仓。
事实证明,我们在一个层面上有一个位置--直到它同时关闭。
...
在同一水平线上一次摆出一个姿势--直到他们在水流上合拢。
你是手动开立第一个头寸,还是想让挂单 在价格越过某个水平后再下?试试这个: 如果你的经纪公司拒绝了一个挂单,没有错误处理。
当然,谢谢你的提示代码,但由于我不是一个很好的程序员,我找不到错误的地方:'}'- 未封闭的小括号
我在Notepad++中放大查看了你的代码,无法纠正错误。
我明白了,我对代码本身感兴趣,而不是对TS感兴趣。
它产生了错误'}'。- 不平衡的括号
我不知道如何修复它。
你能告诉我为什么EA在测试时不开仓,我不明白为什么--我认为我的代码写得很正确。
你能告诉我为什么EA在测试时不开仓,我不确定原因--我认为我的代码写得很正确。
当开立市场订单(OP_SELL或OP_BUY)时,只有最新的Bid(卖出)或Ask(买入)价格可以作为开盘价。
类似这样的事情。
你能告诉我为什么EA在测试时不开仓,我不明白为什么 - 代码似乎写得很正确。
一个数值怎么可能同时高于和低于另一个?