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 "演算子について、もう一度お読みください。ifの直後に括弧がない場合、1つのアクションしか処理しません(price[...]=Ask;となります)。複数のアクションが必要な場合は、ifの直後に{...}で囲む必要があります。
しかし、何も変わりませんでした。 スクリーンショットをご覧ください。
で、価格は下がり、1.2100と1.2200のレベルを越え、オペレータによるポジションは
1.2100と1.2200で買いポジションをオープンする場合 - オープンしませんでした。
ありがとうございます。しかし、ご指摘の通り、if文の直後に括弧を付けました。
スクリーンショットをご覧ください - Expert Advisor が買いポジションを開いたことを示しています。
で、価格が下がり、1.2100と1.2200のレベルを越えて、オペレータの条件によるポジション
1.2100と1.2200で買いポジションをオープンする場合 - オープンしませんでした。
ありがとうございます。しかし、私はあなたが示唆したように、if文の直後に括弧を入れ、 、それは何も変わりませんでした。スクリーンショットを参照してください - それはEAが買いポジションを開いたことを示している 、価格は下がり、レベル1.2100と1.2200と文に従って位置を横切りました。 。
1.2100と1.2200で買いポジションをオープンする場合 - 彼らは開かなかった。
ordersendの後にreturn演算子をつけて、ティック処理を終了させるべきでは?
ordersendの後にreturn演算子を入れても何も変わりません。
一番最初のポジションを手動で開くのか、それとも価格があるレベルに達したときに保留中の 注文を開き、それに基づいて開くのか? . もちろん、保留中の注文がDCによって拒否された場合のために、より多くのエラーハンドリングが必要です。
価格があるレベルに達した後、注文で定義されたレベルでポジションを建てる場合。
1つのレベルに1つのポジションを持っていることがわかった - 同時に閉じるまで。
...
同じレベルで1ポーズずつ、電流で閉じるまで。
最初のポジションを手動で開くのか、それとも価格があるレベルを超えた後に保留中の 注文を出すのか?試してみましょう。 あなたの証券会社が保留中の注文を拒否した場合のエラー処理はありません。 。
もちろんヒントコードをありがとうございます、しかし私は非常に良いプログラマーではないので、私はエラーを見つけることができませんでした:'}'.- ひとでなしかっこ
Notepad++であなたのコードを拡大して見てみましたが、エラーを修正できませんでした。
なるほど、TSではなく、コードそのものに興味があるんですね。
エラー'}'が発生します。- アンバランスな括弧
どう直せばいいのかわからない。
なぜEAがテスト時にポジションを 開かないのか、その理由がわかりません - コードは正しく書いたつもりです。
テスト時にEAがポジションを開けない理由を教えてください。
成行注文(OP_SELLまたはOP_BUY)を発注する場合、最新のBid(売り)またはAsk(買い)の価格のみを開始価格として使用することができます。
というようなものです。
なぜEAがテスト時にポジションを開かないのか、その理由が分かりません。コードは正しく書かれているようです。
ある値が、同時に他の値より高く、低くなることはあるのでしょうか?