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

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

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

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

ありがとうございます。

トムキャット98

もし、あなたがコーディングの経験があるなら、以下を参照してください。そうでなければ、コーダーを雇ってください。

1) 各取引終了後、OrdersHistoryTotal()でループを行い、取引をチェックする。

2)最後の取引の終値(OrderCloseTime())をチェックします。

3) もし最後の取引があれば、OrderProfit() == profitをチェックする。

もし利益==真の場合、EndDayTrade==真の && LastTradeDay==DayofYear()を設定します。

もし利益が偽なら、EndDayTrade==falseとする。

4) プログラムがstart()を通過するとき、新しい取引を開始する前に、if EndDayTrade == false を挿入する必要があります。これはtrueなので、新しい取引を開始することはありません。

5) 新しい日をチェックするためのタイマー関数が 必要です。(新しい日が新しい取引のトリガーになると仮定して)

最も単純な形は if (LastDay != DayofYear() ) です。

6) 上記のタイマー関数内で、LastDay = DayofYear()とします。

if ( LastTradeDay != DayofYear() && EndDayTrade == true)

EndDayTrade == false をセットして、最初からやり直します。

ユーザー定義変数

bool EndDayTrade = false;

int LastTradeDay = 9999999;

int LastDay = 999999;

この説明で十分お分かりいただけたでしょうか?

 
dasio:
こんにちは。

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

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

あなたのdisponibilityをありがとうございました

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);

}

}

誰かが助けることができますか?

 

ダシオ

そのコード全体をstart()プロシージャの最初に置いてみてください。保留中の注文を フィルターにかける必要があるかもしれませんが、そのコードを最初に置けば、もし保留中の注文が「通常の」注文になったとしても、保留中の注文を一掃することができます。

dasio:
誰か助けてください。
 

こんにちは。

私はこのスレッドから多くを学んでいます......それが私が質問を続ける理由です。

今、私は私は一人でそれをしようとするが、私は成功していない。

前提として、私はオフラインのrenkoチャートでこのインジケータを使用したいです。

私の目的は、ろうそくの上または下にプロットすることです どのように長い建設が行われました。

そこで、ろうそくの仕様に、ろうそくが開いた時刻があることを知っています。だから私は現在のろうそくの時間から前のろうそくを引いた場合、私は私が必要とするものを持っています。

だから私はどのようにそれをコード化することができますか?

どうもありがとうございました

 

なぜこのコードがクローズド・オーダーを修正しようとするのかがわからない

OrderCloseTime() を両方の if 文に追加して、ordermodify関数 エラーの無効なチケットに終止符を打とうとしていますが、EA が時々すべての注文を制御できなくなり、何らかの形でクローズした取引が混ざり、それを修正しようとし続けて何度も何度も巨大なログファイルを作り、MT4 を再起動しない限り取引を継続できなくなることがあります。どのようにしてクローズした注文を拾っているのかよく分かりませんが、多分、全ての注文を修正する過程で、その短時間に一つの注文がクローズしてしまい、それが原因なのでしょうか?一日30~50回のトレードのうち、2回くらいしか起きないと言ったように。

どなたか、これを終わらせる方法をご存じですか?

if (NewOrdersPlaced_s3) {

if (flag_s3 == TRUE) {

for (cnt_s3 = OrdersTotal() - 1; cnt_s3 >= 0; cnt_s3--) {

OrderSelect(cnt_s3, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_3 || OrderCloseTime()!=0) continue;

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_3 && OrderCloseTime()==0)// OrderModify(OrderTicket(), AveragePrice_s3, OrderStopLoss(), PriceTarget_s3, 0, Yellow);

//===

while(!OrderModify(OrderTicket(), AveragePrice_s3, OrderStopLoss(), PriceTarget_s3, 0, Yellow))

{Sleep(1000);RefreshRates();}

//===

NewOrdersPlaced_s3 = FALSE;

}

}
 

信号の問題

mladen

どうもありがとうございます。コードは今working.Theアラートはもうそれ自体を繰り返していない。私はそれらの何百ものような複数の受信者に取引アラートを送信されるスクリプトをホストしたい、どのように私はそれを行うことができます.あなたやこのフォーラムの誰もが知っているそれを扱うことができます会社はありますか?

Mastercash:
Mladen ありがとうございます、私はよく見てきました...私はまだcode.Iを通じてときに通知される実験しています。
 

...

2つの考え :

1.もし送るのであれば、合理的な方法はメールを送ることだけだと思いますし、その場合、単に野放しにされているメールスパムプログラムの一つを使えばいいのではないでしょうか?

2.信号の送信には問題が多すぎる(これは私の意見ですが、送信の問題のいくつかは実質的に解決不可能です)。送信する代わりに、ある場所から(ユーザー名やパスなどで)読み取るコードを作れば、送信では解決できないほとんどすべての問題が解決します(複数のIPからの同時使用の防止も含む)。

だから、ちょうどいくつかの考え...

Mastercash:
mladenどうもありがとうございますコードは今取り組んでいる。アラートはもうそれ自体を繰り返していない。私はそれらの何百ものように、複数の受信者に取引アラートを送信されるスクリプトをホストしたい、どのように私はそれを行うことができます.あなたやこのフォーラムの誰もが知っていることを扱うことができます企業はありますか。
 

このようなことを試してみてください。

#include

#define PAUSE_BEFORE_RETRY 1000

#define NumberOfReTries 3

if (NewOrdersPlaced_s3 && flag_s3 == TRUE)

{

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

{

if (!OrderSelect(cnt_s3, SELECT_BY_POS, MODE_TRADES)) continue;

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

if (OrderMagicNumber() != MagicNumber_3) continue;

for (int retry=0; retry<NumberOfReTries; retry++)

{

OrderModify(OrderTicket(), AveragePrice_s3, OrderStopLoss(), PriceTarget_s3, 0, Yellow);

int error = GetLastError();

switch (error)

{

case ERR_SERVER_BUSY:

case ERR_NO_CONNECTION:

case ERR_INVALID_PRICE:

case ERR_OFF_QUOTES:

case ERR_BROKER_BUSY:

case ERR_TRADE_CONTEXT_BUSY:

Sleep(PAUSE_BEFORE_RETRY);

continue;

case ERR_PRICE_CHANGED:

case ERR_REQUOTE:

continue;

default:

retry=NumberOfReTries;

}

}

NewOrdersPlaced_s3 = FALSE;

}

}
beakon:
私は、OrderCloseTime()を両方のif文に追加して、このordermodify関数エラーのための無効なチケットを終わらせることを考えましたが、時々、私のEAはすべての注文を制御できなくなり、どういうわけか閉じた取引を混ぜ、それを継続的に何度も修正しようとして、私がMT4を再起動しない限り、取引を続けることができなくなるのです。どのようにしてクローズした注文を拾っているのかよく分かりませんが、多分、全ての注文を修正する過程で、その短時間に一つの注文がクローズしてしまい、それが原因なのでしょうか?一日30~50回のトレードのうち、2回くらいしか起きないと言ったように。

どなたか、これを終わらせる方法をご存じですか?

if (NewOrdersPlaced_s3) {

if (flag_s3 == TRUE) {

for (cnt_s3 = OrdersTotal() - 1; cnt_s3 >= 0; cnt_s3--) {

OrderSelect(cnt_s3, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_3 || OrderCloseTime()!=0) continue;

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_3 && OrderCloseTime()==0)// OrderModify(OrderTicket(), AveragePrice_s3, OrderStopLoss(), PriceTarget_s3, 0, Yellow);

//===

while(!OrderModify(OrderTicket(), AveragePrice_s3, OrderStopLoss(), PriceTarget_s3, 0, Yellow))

{Sleep(1000);RefreshRates();}

//===

NewOrdersPlaced_s3 = FALSE;

}

}
 

アラートソリューション

私はこれについてもっと説明が必要だと思います。私は私が同時にすべての私のクライアントに警告を送信するのに役立ちますコードを書いてセットアップする方法についてのヒントが得られます。それはデータベースに彼らの電子メールアドレスを格納することによってである....しかし、どのようにサーバー言語、例えば、phpスクリプトは、自動的にmt4プラットフォームから警告を収集しますか?

mladen:
2つの考え:

1.送信するのであれば、メールを送るのが唯一の合理的な方法だと思いますし、その場合、単に野放しになっているメールスパムプログラムの一つを使えばいいのではないでしょうか?

2.信号の送信には問題が多すぎる(これは私の意見ですが、送信の問題のいくつかは実質的に解決不可能です)。そこで、論理を逆転させて、送信する代わりに、ある場所から(ユーザー名やパスなどを)読み取るコードを作れば、送信では解決できないほとんどすべての問題が解決します(複数のIPからの同時使用の防止を含む)。

ということで、ちょっと考えてみたのですが.
 

マスターキャッシュ

大量の電子メールを送信する」でググってみてください。

アラートの収集」については、シグナルを配信したり、シグナルへのアクセスを可能にするソフトウェアが認識できる読みやすい形式に「エクスポート」するものが必要です。

PS: シグナルサービスは、一見したところよりずっと複雑で、もしあなたがそれを作るつもりなら、その通りに機能させるために相当なコストがかかると予想されます。

Mastercash:
私はこれについてのより多くの説明を必要とすると思う、あなたは私が同時にすべての私のクライアントにアラートを送信するのに役立ちますコードを書いてセットアップする方法についてのヒントが得られます。それはデータベースに彼らの電子メールアドレスを格納することによってである....しかし、どのようにサーバー言語、例えば、phpスクリプトは、自動的にmt4プラットフォームからアラートを収集するのでしょうか?...私はこれが問題だと思います、方法があることができれば、それは複数の携帯電話や電子メールアドレスに送信できますあなたのアドバイス、お願い?