どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 513

 

私は正しいことをしているのだろうか。

y = OrderOpenPrice()-Ask;

最後のオープンオーダーの価格から現在の 価格を引くのですが?

int i_buy=0; int i_sell=0;

for(int i=0;i<OrdersTotal();i++){

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol()){

switch(OrderType()){// Есть ли открыте ордера

case OP_BUY:

i_buy++;

break;

case OP_SELL:

i_sell++;

break;

}

y = OrderOpenPrice()-Ask;

}

}


if((i_buy==0 && i_sell==0) || y > Step) //--- нет открытых ордеров, открываем или расстояние от последнего ордера до текущей цены. Больше step

OrderSend(Symbol(), OP_BUY,StartLot,Ask,Slippage,0,Ask+TakeProfit*Point(),WindowExpertName()+" "+(string)0,0,0,clrBlue);


 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //変数 "z "の宣言
double y; //変数 "y "の宣言


if(OrderSelect(10,SELECT_BY_POS)==true) //選択された注文(チケットによる)がある場合

{

OrderLots()=z //変数 "z "にこの注文のロットを割り当てる

OrderOpenPrice()=y //変数 "y "にオープンプライスを代入する。

}

やってみる

ただ、人を混乱させたり、デタラメを言ったりするのは勘弁してほしい。チケットでと言いながら、インデックスで選択と書いていますね。また、チケットで選択する場合、poolを 指定する必要はありません。この関数はそれを無視して、2つのリストのどちらか、つまりpoolがあるほうのリストで選択されます。注文がどのリストから選択されたかを確認するには、選択が成功した後、注文の終了時刻を確認する必要があります。

ロットの値を変数に代入しているのではありませんし、その逆も同様です。選択した注文のロットを返す関数に変数の値を代入しようとしているのです。これはまったくナンセンスです。

始値を返す関数でやろうとしていることは全く同じです。

 

artmedia70 です。

どこが悪いのか教えてください。すべて正しいようです。

if((i_buy==0 && i_sell==0) || y > Step)

または(i_buy==0 && i_sell==0) or y > Step.どちらか一方でもあればそして、それをスキップして注文を開けるのです。

 
evillive:

アルパリなら......絶対に無理です。他の証券会社であれば、口座によって異なります。アルパリと良好な関係を築ければ、マーケットへの理解も深まるでしょう。貿易条件は、何かを始める前に勉強すべきです。全てそこに書かれています。 。

8-800-200-01-31のヘルプデスクでは、先週末にECN口座でSLとTPを設定すると同時に注文が開設されるバグを修正したと説明した。木曜日に最後のポジションをクローズしました。

取引 規程には何も書かれておらず、今はOrderModify() しか保存されないというのは正しいです。

返信ありがとうございます。

 
Zolotai:

artmedia70 です。

どこが悪いのか教えてください。すべて正しいようです。

if((i_buy==0 && i_sell==0) || y > Step)

または(i_buy==0 && i_sell==0) または y > Step.どちらか一方でもあればそして、それをスキップして注文を開けるのです。

実質的に質問の意味がわからない...。

何が足りないのかわからないが、オーダーは開けることができる...。すなわち、この条件が満たされ、注文を開くべきであれば

ここに書いてあることを伝えればいいんです。

i_buyとi_sellがともに0であれば、注文を出すことができる。あるいは、どちらかが0に等しくなければ、あるいは両方が等しくなくても、yがStepより大きければ、同様にオーダーをオープンします。

 
artmedia70:

実質的に質問の意味がわからない...。

何が足りないのかわからないが、オーダーは開けることができる...。つまり、この条件が満たされ、注文が開始されるべき場合です。

ここに書いてあることを伝えればいいんです。

"i_buy "と "i_sell "が共に0であれば、注文を出す。あるいは、どちらかがゼロに等しくない場合、あるいは両方が等しくない場合でも、yがStepより大きい場合は、注文を出す必要があります。



ループで正しく理解しています。最初のオープンオーダーから最後のオーダーまで進みます。従って、最後の注文の価格を取るべきでしょう。

まだまだありますよ。OnTickにAlert("d")を入れています。テスターでコードを実行しましたが、ビープ音もウィンドウも聞こえません。

 
Zolotai:

フォークサイクルでは正しく理解しています。最初のオープンオーダーから最後のオープンオーダーへ。それに対応して、前回の注文の値段を取る。

これも持っています。OnTickにAlert("d")を入れています。テスターでコードを実行しましたが、ビープ音もウィンドウも聞こえません。

テスターでのアラートはテスターログに表示されます。しかし、スキップ、セレクト、ブルートフォースというサイクルについては不明です。最終的に何をしたいのか、要点がつかめるか?
 

こんにちは。

EAを編集しようとすると「MetaEditorが見つかりません」と言われるのですが、どうすればいいでしょうか?MetaTrader build 600。

古いビルドではそのような問題はなかったように記憶しているのですが...。

私が作業しているパソコンは、どちらかというと低性能で、50~75%の負荷がかかっているということで説明できるでしょうか。MT4インスタンスを7台稼働させていますが、通常の状態(TeamViewerでアクセスしてMetaEditorを起動 するような外部負荷がない状態)では性能は十分で、バックグラウンドで稼働するタスクマネージャーでは15~20分の平均CPU使用率は<=45~50%となっています。

この問題は100%発生するわけではなく、尋常でない忍耐力と粘り強さを発揮して、5回目~10回目~25回目までは毎回MetaEditorが起動するようになります。しかし、30分もMetaEditorを起動しようとするのは本当に迷惑な話です。

 
artmedia70:
テスター内のアラートはテスターのログに出力されます。また、ループ、スキップ、セレクト、ブルートフォースについてはどうなっているかは不明です。結果的に何がしたいのかの要点がつかめるか?


一番シンプルなロボットを書きたいだけなんです。マーチン単体で機能します。

ここに間違いがあるのです。

y = OrderOpenPrice()-Ask;

思ったより整数が出ない。しかし、例えば0.0044の場合。整数である44を得るには?

 
Zolotai:


一番シンプルなロボットを書きたいだけなんです。マーチン単体で機能します。

ここに間違いがあるのです。

y = OrderOpenPrice()-Ask;

思ったより整数が出ない。しかし、例えば0.0044の場合。整数である44を得るには?



int y = int((OrderOpenPrice()-Ask)/Point);