[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 744

 

まだこの注文は一括で開きます。

私のekspertでは、このように変数を設定します。

extern int TakeProfit=18;
extern int StopLoss=18;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=10;
int h1=26;
int mag=777;
bool b=0,s=0, //соответственно бай или селл  
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;//      то же по ТП
double bl=0,sl=0; // лоты соответсвенно для бай и селл

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)



   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    NewOrder(OP_SELLLIMIT,Lot);
    NewOrder(OP_BUYSTOP,Lot);
    NewOrder(OP_SELLSTOP,Lot);
    Today=TimeDay(TimeCurrent());}
    
{



for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1;
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
         }
      }


}//end

if(bs==1||bl==1)
{   
    NewOrder1(OP_BUYLIMIT,Lot);
Today=TimeDay(TimeCurrent());}
    

と、ここでオーダー開始

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
//-----------
if(tic1<0) Print(GetLastError());

if(tic1>0){
b=0;s=0; //соответственно бай или селл  
bs=0;// если закрытие по стоплоссу ордера бай
ss=0;// если закрытие по стоплоссу ордера sell
bt=0;
st=0;//      то же по ТП
bl=0;sl=0; // лоты соответсвенно для бай и селл
}
//-----------
return(tic1);}
 
profitinvesting:

例えば20pipsの利益が出たときに、ブレークイーブンレベルで一旦ストップをかける関数のコードを教えてください。

ご返信ありがとうございました:)

Igor Kim氏のサイトhttp://www.kimiv.ru、このほかにも多くの便利な機能が紹介されています。で、必要なのはMovingInWL()というやつなんですが、間違ってなければ。
 
ToLik_SRGV:

ボリス もっと単純な話なんだ。この行を落とすと

コードの一番上にある(どの関数にもない、分離すること)。
そして、OrderSend(...)関数の呼び出しがある箇所では、それをif演算子の追加の抱擁で囲むだけです。

さて、次の注文を出す前に、オペレーターは現在のバーで取引があるかないかをチェックします。もしそうであれば、現在のバーが変数newに格納されており、もし現在のバーが格納されているものと一致すれば、ポジションは開かれない。したがって、バーが新しい場合、その開始時刻は変数newのデータと一致しないので、ディールは開かれ、変数newは 新しい値を得ることになります。

あなたのEAのアーキテクチャを正確に把握しているわけではありませんが、この方法はほとんどの場合うまくいくはずです。


本当にありがとうございました。フィット感もバッチリ!
 

これ以上の進め方はないと思います。

配列の束を使ったインジケータがあります。2番目のインジケータは、これらの配列と連動する必要があります。 計算し、その結果を独自のテーブルに出力すること。

一番簡単な方法は、このインジケータを呼び出すことですが、それは不可能なようです。

他のアレイにアクセスする方法は?

 
Abzasc:

どうだろう。

了解しました。
 
LAIT123:

こんにちは、MT4でログを表示する方法を教えてください。

たった1つの内容で15通も投稿する必要はありません。また、その際は後始末をすることが望ましいです。おじさんたちを待っていてはいけない。
 
artmedia70:

本当に必要なのか...:) あるいはマウスが動かない...。



詰まっているのはマウスではありません。それは焦りです。結局15件の書き込みを削除するのに20分かかりました。
 
Vinin:

詰まっているのはマウスではありません。
チャットルームと勘違いしていた :)
 
FoxUA:

まだこの注文は一括で開きます。

私のekspertでは、このように変数を設定します。

と、ここでオーダー開始

まったくもって気持ちがわからない...。ブレース同士が合っていない、クロージングブラケットが1つ足りない...。どうなっているんだろう。コードをきれいにする...扱いが難しいし、コンパイルして実行する方法もないし、自分たちでコードを作っているのに......。
 
Vinin:

詰まっているのはマウスではありません。それは焦りです。結局15件の書き込みを削除するのに20分かかりました。
:)せっかちは、普段は別の職場で実践しているのですが...。:)