[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 450

 
T-G:
はい、しかし、質問のポイントは、前の注文がマイナスで閉じられたことです。 関数はこれを表示する時間がなく、まず、数ティックの後に注文が開かれ、その時だけ最後の損失を表示しますが、注文はすでに開かれています。
チェックでコードスケルトンを書きました
 
私はもう一度言うチェックする時間を持って いない最初にそれがないヘラジカが取引を開始し、それがヘラジカがあったことを彼に来るかのように通過しました。
 
artmedia70:

Expiration pending order パラメータを使用してはいかがでしょうか。

もちろん、このパラメータが使用できない可能性もあります。

一部の取引サーバーでは、保留中の注文の有効期限を禁止している場合があります。この場合、expiration パラメータに0以外の値を設定しようとすると、エラー147(ERR_TRADE_EXPIRATION_DENIED)が発生します。

もちろん、それしかないのですが...。

ご指摘の通り行を変更したところ、Expert Advisorが動作しなくなりました...。

ticket=OrderSend(Symbol()、OP_BUYSTOP、Lots、Ask+PriceDistance*ポイント、3、Ask+PriceDistance*ポイント-StopLoss*ポイント、Ask+PriceDistance*ポイント+TakeProfit*ポイント、 "PD",1,TimeCurrent()+10*60,Green);

同時に、禁止事項がないことも確かです。

どこにエラーがあるのかご指摘ください。

 
T-G:
私はもう一度言うチェックする時間を持って いない最初にそれがないヘラジカが取引を開始し、それがヘラジカがあったことを彼に来るかのように通過しました。
奇跡は起きない。テレパスに診てもらうといい...
 
OlegArH:

ご指摘の通り行を変更したところ、Expert Advisorが動作しなくなりました...。

ticket=OrderSend(Symbol()、OP_BUYSTOP、Lots、Ask+PriceDistance*ポイント、3、Ask+PriceDistance*ポイント-StopLoss*ポイント、Ask+PriceDistance*ポイント+TakeProfit*ポイント、 "PD",1,TimeCurrent()+10*60,Green);

同時に、禁止事項がないことも確かです。

どこにエラーがあるのかご指摘ください。

動かなくなった可能性は低いが、あなたの基準には欠陥がある可能性が高い。コードがないと、EAが動かない理由が思いつかないのですが...。
 
artmedia70:
動かなくなったということはないと思いますが、基準が甘くなる可能性が高いです。コードがないと、EAが動かない理由が思いつかない...

これまで走り書きしてきたのは、こんな感じです。

extern double TakeProfit = 50;
extern double StopLoss=100;
extern double PriceDistance = 50;
extern double Lots = 1;
extern double TrailingStop = 50;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int cnt, ticket, total;

total=OrdersTotal()。
if(total<1)
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point, Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,0,Green) です。
スリープ(10000)。
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point,Bid-PriceDistance*Point-TakeProfit*Point, "PD",2,0,Red);
}

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // 開いたポジションをチェックする)
OrderSymbol()==Symbol()) // シンボルをチェックする
{
if(OrderType()==OP_BUY) // ロングポジションがオープンされる
{
// 閉鎖すべきなのか?
もし(1!=1)
{
オーダークローズ(OrderTicket(),OrderLots(),Bid,3,Violet); // クローズポジション
return(0); // 終了
}
// トレーリングストップをチェックする
if(TrailingStop>0)
{
if(入札-注文開始価格()>ポイント*トレイリングストップ)
{
if(オーダーストップ・ロス()<ビッドポイント*トレイリングストップ)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green)。
return(0)です。
}
}
}
}
else // ショートポジションに移行
{
// 閉鎖すべきなのか?
もし(1!=1)
{
オーダークローズ(オーダーチケット(),オーダーロット(),アスク,3,バイオレット); // クローズポジション
return(0); // 終了
}
// トレーリングストップをチェックする
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)))
{
オーダーモディファイ(オーダーチケット()、オーダーオープンプライス()、アスク+ポイント*トレイリングストップ、オーダーテイクプロフィット()、0、レッド)。
return(0)です。
}
}
}
}
}
}
return(0)です。
}

// 終了

仕組みはこうだ...。しかし、それに応じて、クリーパーを無限に取引します。

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

 
OlegArH:

これまで走り書きしてきたのは、こんな感じです。

extern double TakeProfit = 50;
extern double StopLoss=100;
extern double PriceDistance = 50;
extern double Lots = 1;
extern double TrailingStop = 50;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int cnt, ticket, total;

total=OrdersTotal()。
if(total<1)
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point, Ask+PriceDistance*Point+TakeProfit*Point, "PD",1,0,Green) です。
スリープ(10000)。
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point,Bid-PriceDistance*Point-TakeProfit*Point, "PD",2,0,Red);
}

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // 開いたポジションをチェックする)
OrderSymbol()==Symbol()) // シンボルをチェックする
{
if(OrderType()==OP_BUY) // ロングポジションがオープンされる
{
// 閉鎖すべきなのか?
もし(1!=1)
{
オーダークローズ(OrderTicket(),OrderLots(),Bid,3,Violet); // クローズポジション
return(0); // 終了
}
// トレーリングストップをチェックする
if(TrailingStop>0)
{
if(入札-注文開始価格()>ポイント*トレイリングストップ)
{
if(オーダーストップ・ロス()<ビッドポイント*トレイリングストップ)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green)。
return(0)です。
}
}
}
}
else // ショートポジションに移行
{
// 閉鎖すべきなのか?
もし(1!=1)
{
オーダークローズ(オーダーチケット(),オーダーロット(),アスク,3,バイオレット); // クローズポジション
return(0); // 終了
}
// トレーリングストップをチェックする
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)))
{
オーダーモディファイ(オーダーチケット()、オーダーオープンプライス()、アスク+ポイント*トレイリングストップ、オーダーテイクプロフィット()、0、レッド)。
return(0)です。
}
}
}
}
}
}
return(0)です。
}

// 終了

仕組みはこうだ...。しかし、それに応じて、クリーパーを無限に取引します。

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


コードの挿入方法を学ぶ -すべて 読む
 
Roman.:

コードの挿入方法を学ぶ -すべて 読む

Romanさん、回答ありがとうございました。
私がやるべきことはただ一つ、ロボットが自動的に開いた時間分のトレードを開くようにすることです。

例えば、ロボットがTARGET取引を開始し、自動的に有効期限を現在のものから+600秒に設定する、それだけ...。

このケースでは、オプションは、彼自身がそれらを削除すると、私は価格がまだ開いていないものを含め、開始価格に10ポイント+スプレッドよりも近づいた場合、保留中の注文の変更に制限がある "訓練 "上のTC以来、適合しません 注文.

それに、ポイントは、すでにオープンしているオーダーは削除せず、「プレイスルー」して失敗させることです。また、orderdeliteを設定すると、すでにトリガーされた注文も決済されます。(?)

教科書については - まあ、私は気質的にプログラマーではなく、優秀な人道主義者です - 私は絵を描き、モデルを作り、作曲し、他のもののために研ぐことはありません!)

誠心誠意、取り組んできたつもりです。納得のいくものもあれば、そうでないものもありました。

だから、ここにいるんだけど......。

 
OlegArH:

Romanさん、返信ありがとうございます
ロボットが自動でトレードを開始した時点から、時間通りにトレードを開始するようにすればいいのです。

例えば、ロボットがTARGET取引を開始し、自動的に有効期限を現在のものから+600秒に設定する、それだけ...。

このケースでは、オプションは、彼自身がそれらを削除すると、私は価格がまだ開いていないものを含め、開始価格に10ポイント+スプレッドよりも近づいた場合、保留中の注文の変更に制限がある "訓練 "上のTC以来、適合しません 注文.

それに、すでにオープンしているオーダーは削除せず、「再生」させて「死」までバブル化させることがポイントです。また、orderdeliteを設定すると、すでにトリガーされた注文も決済されます。(?)

教科書については - まあ、私は気質的にプログラマーではなく、優秀な人道主義者です - 私は絵を描き、モデルを作り、作曲し、他のもののために研ぐことはありません!)

誠心誠意、取り組んできたつもりです。納得のいくものもあれば、そうでないものもありました。

だから、ここにいるんだけど......。

ここに書かれていることを言葉で表現してみてください。

extern double TakeProfit = 50;
extern double StopLoss=100;
extern double PriceDistance = 50;
extern double Lots = 1;
extern double TrailingStop = 50;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
   int cnt, ticket, total;

   total=OrdersTotal();
   if(total<1) {
      ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,
                       Ask+PriceDistance*Point+TakeProfit*Point,"PD",1,0,Green);
      Sleep (10000);
      ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point,
                       Bid-PriceDistance*Point-TakeProfit*Point,"PD",2,0,Red);
      }

   for(cnt=0;cnt<total;cnt++) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&                         // check for opened position
         OrderSymbol()==Symbol()) {                      // check for symbol
         if(OrderType()==OP_BUY) {                       // long position is opened
            if(1!=1) {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
               return(0);                                // exit
               }
                                                         // check for trailing stop
            if(TrailingStop>0) {
               if(Bid-OrderOpenPrice()>Point*TrailingStop) {
                  if(OrderStopLoss()<Bid-Point*TrailingStop) {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                     }
                  }
               }
            }
         else {                                          // go to short position
                                                         // should it be closed?
            if(1!=1) {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
               return(0);                                // exit
               }
                                                         // check for trailing stop
            if(TrailingStop>0) {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                     }
                  }
               }
            }
         }
      }
   return(0);
}

個人的には、「1が1に等しくないなら、注文を締め切る」という、一見するとパズルのような発想になるのですが......。

それ以降は見てません...。

ZSで、1サイクルで普通のEAが書けるなんて思わないで、やってみてください...。

 
OlegArH:

...また、orderdeliteを入れると、すでにトリガーされているオーダーもクローズされる関数です。(?)

...


いいえ、よく見てください。トリガーされた未決済注文は成行注文になります - 本機能は関係ありません。

"以前に設定された保留中の注文を 削除します。関数が正常に終了した場合、TRUE を返します。FALSEを返す

関数が正常に終了していない場合GetLastError()を呼び出してエラー情報を取得する。"