コーディングの方法は? - ページ 318

 
mladen:
dasio すでに現在の日の全時間帯をループしています。iClose()とiOpen()は、1時間足とは異なる時間枠からの呼び出しの一例として置いてみました。もし、現在とは違う日にアクセスしたい場合は、datetime startTime=iTime(NULL,PERIOD_D1,0); の部分の "0" を、データを収集したい任意の日に置き換えてください。

ありがとうございます。

多分私は勉強しなければならない。

00:00 candle - 01:00 - 02:00 などの計算を別々に行うことができるのか、理解できません。

申し訳ありません

 

信号の問題

Mladen

ありがとうございます、よく見ました...私はまだcode.Iを通じて通知することを実験しています。

 

ダシオ

この部分

int i=iBarShift(NULL,PERIOD_H1,startTime);

指定された日の最初の時間足ロウソクのシフトにiを設定します(それはdatetime startTime=iTime(NULL,PERIOD_D1,0); が加えられた理由です - その日の開始時間を見つけるために)その後、それは日が同じまままで各1時間足の値を介してループします(例えば金曜日は 24回ではなく、22または23をループしますが、あなたのブローカーによって異なります)。

あなたは少し異なって行われなければならないいくつかの配列を感じる必要がある場合は、それがあなたの考えだったUF今私を聞かせて)

dasio:
ありがとうございました。

多分私は勉強しなければならない。

01:00 - 02:00など - 私は00:00キャンドル用に別々の計算を行うことができますどのようにunderstanません。

申し訳ありません
 

エキスパートストップの作り方

こんにちは、コーダーの皆さん。

勝ちトレードの後、エキスパートがストップするようにコーディングするにはどうしたらいいですか?

ピップがバッグに入った後、Expertが停止するようにします。

ありがとうございました。

トムキャット98

 
mladen:
ダシオ

この部分

int i=iBarShift(NULL,PERIOD_H1,startTime);

はiを指定された日の最初の1時間足のローソクのシフトに設定します(これがdatetime startTime=iTime(NULL,PERIOD_D1,0); を追加した理由です - その日の開始時間を見つけるために)その後、日が同じになるまで各1時間足の値をループします(例えば金曜日は24回ループしませんが、ブローカーによっては22または23です)。

あなたは少し異なる方法で行われなければならないいくつかの配列を感じる必要がある場合は、それがあなたの考えだったufを今私に知らせてください)

ありがとうございます。

私はもう少し理解しています。

しかし、私はそれが例えば必要です。

私は次のような変数に関連付ける必要があります。

(キャンドル00:00 ;変数=終値+高値

キャンドル01:00 ;変数1 = Close+Open

キャンドル02:00 ;変数2 =高+低。

というように、その日の1時間足のローソク足すべてについてです。

だから、変数はどのようにダブル定義されています。

その後、私は変数といくつかの数学の計算を行い、バッファに結果を関連付ける必要があります(それは問題ではありません)。

私の問題は、変数の関連付けです....

 

もう一つの問題は...私はプログラミングを勉強しているのですが、時々(時々だけ?

もし私が2つの保留中の注文を 置くEAを持っている場合、私は1つの保留中の注文が開かれたときに、他の保留中の注文を削除する必要がある場合はどのようにコードすることができますか?

ありがとうございます。

 

2つのループを使用する必要があります。

まず、保留中の 注文の一部が「通常の」注文になったかどうかを調べるために、注文をカウントする必要があります(したがって、OP_BUY または OP_SELL タイプの注文を定期的にカウントし、必要に応じて残りの注文もカウントする必要があります)。

オープンした注文がある場合、もう一度ループして、OP_BUYまたはOP_SELLタイプの注文でないすべての注文を削除しなければなりません。

コードはこのようなものになります。

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
もう一つの問題は...私はプログラミングを勉強しようとしているのですが、時々(時々だけですか?

もし、2つの保留中の注文を置くEAがあるとして、1つの保留中の注文が開かれたときに、もう1つの保留中の注文を削除しなければならない場合、どのようにコーディングすればいいでしょうか?

ありがとうございます。
 

すべての売りポジションまたはすべての買いポジションを閉じる(目標利益を達成した場合のみ)。

こんにちは、私はFXとEAの初心者です。目標達成時に「全売りクローズ」または「全買いクローズ」するEAを探したのですが、見つかりませんでした。HIT TARGET or PROFIT "のない "close all sell or all buy "しか見つけられませんでした。どなたか、以下の機能を持つEAを作成するのを手伝っていただけませんか?

1)利益がXターゲットにヒットした場合、すべての売りをクローズします。

2)利益がXターゲットにヒットした場合、すべての買いをクローズします。

3)トレーリングストップを含む(可能であれば。不可能であれば問題なし)

4)すべての買いを閉じるか、すべての売りを閉じる場合、自己資本またはマージンレベルがX%未満の場合は閉じない(可能な場合、できない場合は問題ありません)。

注意

4の場合、コード化が難しいので、1,2,3を1つのEAで実現する。

4と3が難しい場合は、1と2だけを1つのEAにする。

それでも難しい場合は、1番と2番を別々に作成すればよい。

以上、どなたか教えていただけると本当に助かります。

ありがとうございました。

 
pipsmonitor:
こんにちは、すべて...私はFXとEAに新しいです。ターゲットにヒットしたときに、「すべての売りを閉じる」または「すべての買いを閉じる」ためのEAを見つけようとしましたが、見つかりませんでした。HIT TARGET or PROFIT "のない "close all sell or all buy "しか見つけられませんでした。どなたか、以下の機能を持つEAを作成 するのを手伝っていただけませんか?

1)利益がX目標に達したら、すべての売りを決済する。

2)利益が目標値に達したら、買いを全て決済する。

3)トレーリングストップを入れる(可能な場合。できない場合は問題ない)

4)買いまたは売りを全てクローズする場合、自己資本または証拠金がX%以下であればクローズしない(可能な場合、不可能な場合は問題なし)。

注意

4の場合、コード化が難しいので、1,2,3を1つのEAで実現する。

4と3が難しい場合は、1と2だけを1つのEAにする。

それでも難しい場合は、1番と2番を別々に作成すればよい。

どなたか上記のことを教えていただけると本当にありがたいです。

ありがとうございました。

こんにちは、Pipsmonitorです。

多分このページで何かを見つけたhttps://www.mql5.com/en/forum/181179 また、フォーラムのヘッダーバーでgoggle検索をしました 利益に閉じて使用され、あなたが使用できるかもしれないそこにいくつかを見つけました また、トレーリングEasの検索を試みるかもしれません、EMAトレーリングとBBandストップトレーリングEaを知っている。

 

こんにちは。

この2つのコードを統合しようとしているのですが、うまくいきません。

私は、1つの保留中の注文が 満たされたとき、他のものはキャンセルされなければならないことが必要です。

あなたの使い捨てをありがとうございました

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}