Zen これで大丈夫だと思います。 ただ、私のEAは多通貨取引EAなので、EAがどの通貨ペ アで取引したのかわからず、特定の通貨をチェックできなかったため、少し変更が必要です。そのため、OrderSymbol()の代わりに、特定のOrderComment()を探すようにコードを変更しなければならないのです。私は以下のコードを使って、現在すでに取引が存在するかどうかをチェックしていましたが、同じバーですでに取引が終了しているかどうかをチェックするのに苦労していました。
for(int i=totalorders-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderComment() == EA_Name + MagicNumber) GoOrders = false; }.
matrixebizさん、ローソク足が閉じる前に同じローソク足で取引開始・終了している可能性は考えましたか? 履歴リストも確認したほうがいいかもしれませんね。
私はいつもこの小さな関数を私のすべてのEAに移植してきました、おそらくあなたもそれを見つけることができるかもしれません。
bool DecideToOpenTrade()
{
int total = OrdersTotal();
if (total > 0)
{
for(int cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)
{
return (false);
}
}
}
}
// in case trades has already opened and closed within the candle
int histotal = OrdersHistoryTotal();
if (histotal > 0)
{
for(cnt=0;cnt<histotal;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)
{
if (Time[0] <= OrderOpenTime()) // don't open a new position if we're still on the same candle
{
return (false);
}
}
}
}
}
return (true);
}
int start()
{
// some time check codes first.. blah blah
// ...
// ...
// ...
// check signals
if (Should_Buy())
{
if (DecideToOpenTrade())
{
//... trade opening codes here
}
}
if (Should_Sell())
{
if (DecideToOpenTrade())
{
//... trade opening codes here
}
}
}
注:この関数は、EA_MAGIC_NUMにユニークな値を設定したことを前提としています。そうすれば、他のEAによって開かれた取引をチェックすることはありません。
Should_Buy()とShould_Sell()は、売買シグナルが発生したかどうかを判断するために私がすべてのEAで作成している関数です。
これがお役に立てれば幸いです。さらに説明が必要であれば、私にPMしてください。
よろしくお願いします。
禅Zen これで大丈夫だと思います。 ただ、私のEAは多通貨取引EAなので、EAがどの通貨ペ アで取引したのかわからず、特定の通貨をチェックできなかったため、少し変更が必要です。そのため、OrderSymbol()の代わりに、特定のOrderComment()を探すようにコードを変更しなければならないのです。私は以下のコードを使って、現在すでに取引が存在するかどうかをチェックしていましたが、同じバーですでに取引が終了しているかどうかをチェックするのに苦労していました。
for(int i=totalorders-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderComment() == EA_Name + MagicNumber) GoOrders = false; }.
if (GoOrders){orders();}.
1シグナルにつき1トレード
こんにちは、どなたか助けてください。
私はコードを書くのがとても初心者で、今作っているEAに問題があります。このEAが取引を行い、次のシグナルを待ってから別の取引を行うようにしたいのです。
今それは貿易を置き、その貿易が終わるとすぐにそれは次の信号を待つことなく別の貿易を再入力する 今私は誰かが私が再び入る前に次の信号を待つために使用するコードを知っていれば知りたい
事前にどんなヘルプにも感謝します。
このエラーを解消する方法を教えてください
最近、このエキスパートに取り組んでいますが、このエラーをクリアすることができません。
以下がそのエラーです。
2009.01.07 08:46:58 2008.05.28 04:20 USDJPY,H1: OrderClose関数の チケット 197 が不明です。
2009.01.07 08:46:58 2008.05.28 04:20 USDJPY,H1: OrderClose error 4108 です。
よろしくお願いします。
int start()
{
if( iMA(NULL,0,5, 0,MODE_EMA, PRICE_CLOSE, 0) <iMA(NULL,0,30, 0,MODE_EMA, PRICE_CLOSE, 0))
)
{
OrderSend(Symbol( ),OP_SELL, Lots,Bid, 0,Bid+StopLoss* Point,Bid-TakeProfit* Point,"", SystemMagicNumbe r,0,Red).OrderSend(Symbol( ),OP_SELL, Lots,Bid,0,Bid-StopLoss* Point,"", SystemMagicNumbe r,0,Red)
return(0);
}
if( iMA(NULL,0,5, 0,MODE_EMA, PRICE_CLOSE, 0)>iMA(NULL,0,30, 0,MODE_EMA, PRICE_CLOSE, 0))
)
{
OrderSend(Symbol( ),OP_BUY, Lots,Ask, 0,Ask-StopLoss* Point,Ask+ TakeProfit* Point,"", SystemMagicNumbe r,0,Blue) ;
return(0);
}
if (OrderType() ==OP_SELL)
{
if (iMA(NULL,0,5,0,MODE_ EMA, PRICE_CLOSE, 0)>iMA(NULL,0,30,0,MODE_EMA, PRICE_CLOSE, 0))
{
OrderClose(SystemMa gicNumber, Lots,OrderCloseP rice(),0) ;
return(0);
}
}
if (OrderType() ==OP_BUY)
{
if (iMA(NULL,0,5,0,MODE_ EMA, PRICE_CLOSE, 0)<iMA(NULL,0,30,0,MODE_EMA, PRICE_CLOSE, 0))
{
OrderClose(SystemMa gicNumber, Lots,OrderCloseP rice(),0) ;
return(0);
}
}
有限のラインオブジェクトを作成する方法
無限大の線状オブジェクトを作成することは可能です。しかし、ある点から別の点へ有限の線を引くにはどうしたらよいでしょうか。ご回答よろしくお願いします。
無限大のtrendline_objectを作成することは可能です。しかし、ある点から別の点へ有限の線を引くにはどうしたらよいのでしょうか?ご回答よろしくお願いします。
OBJPROP_RAY を false に設定する。
シグナルが出た後、1ティックごとに EAが注文を送信してしまいます。助けてください。
今、EAを作るために勉強しています。
シグナルが出たら1回だけ注文を出すということをEAに理解させるにはどうしたらいいか。
ロジックとしては
シグナルが出る前は静止している。
シグナルが出たらすぐに、一回だけ注文を出す。
そして、次のシグナルを待ちます。
問題は
このEaは、前の注文が清算されたかどうかに関係なく、注文を送ることができるはずです。
だから、私は前の順序が閉じた後だけ順序を送るためにそれをコーディングすることができません。
ありがとうございました。
ea base on indicatorのヘルプ
--------------------------------------------------------------------------------
親愛なるすべて
私はインジケータ(3ma cross with signal)を持っています、私はそれをeaに変更する必要があります、私はind init()をexpert init() と ind start() を expert start() にコピーして、矢印が私に信号を与えるときに売りと買い機能を 置くことができますか?
私はそれを行うが、それはdosent動作
コーディングの問題についてのヘルプ
こんにちは。
私は、一定の間隔で多くの保留中の注文を 開く非常に単純なEAを書こうとしています。 使用中、注文を開くのですが、その後、延々と開き続けます。 注文が一度だけ開き、注文がライブになりTPまたはSLにヒットすると、元のリストから新しい保留中の注文に置き換えられるようにするには、どのようにコーディングすればよいでしょうか?
どんな助けにも感謝します。
ダン
1つのマジックナンバーに1つの取引?
私は、手動での取引 決定に基づいて自動的に取引を開始するEAをスクリプト化しています。例えば、私はチャートを見て、どの価格で注文を出すか、ストップとテイクは何か、などを決定します。そしてEAを設定し、その価格に達したら取引を開始します。
EAがマジックナンバーごとに1回だけ取引を開始するようにする必要があります。マジックナンバーは手動で設定し、各ナンバーはユニークなものにします。この方法では、取引が開始され、その後停止した場合、EAは取引価格に再び到達した場合、別の取引を開始しようとしません。
これを達成するための最良の方法について何か考えがありますか?いくつかのコード例も有用であろう
...
私は、手動での取引決定に基づいて自動的に取引を開始するEAをスクリプト化しています。例えば、私はチャートを見て、どの価格で注文を出すか、ストップとテイクは何か、などを決定します。それからEAを設定し、その価格に達すると取引が開始されます。
EAがマジックナンバーごとに1つの取引しか行わないようにする必要があります。マジックナンバーは手動で設定し、各ナンバーは一意であるようにします。この方法では、取引が開始され、その後停止された場合、EAは再び取引価格に達した場合、別の取引を開始しようとしないでしょう。
これを達成するための最良の方法について何か考えがありますか?いくつかのコード例も参考になると思います私はこのフォーラムでマジックナンバーソリューションのトレッドを持っていました...残念ながら、davidkeとwalanderは私の革新的なアイデアを嫌い、ボード上のすべての悪臭を上げました...結果として私のトレッドは削除されました...