[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 625

 
Dimka-novitsek:

おはようございます。

トレーリングストップの条件がうまくいかないのです。

だから、まだ履歴に残ってないのにすぐに注文が取られてしまうんです!全然理解できません。

そして、この状況の方が良いのですこの仕掛けがあれば、少なくとも、すでに履歴に残っているオーダーは修正されます。

しかし、5回や10回に1回はナホドカが真値を とらず、それ以上の修正が 発生しないのです


if(OrderClosePrice()==OrderTakeProfit())nahodka=true; は試されましたか?
 
Dimka-novitsek:

おはようございます。

トレーリングストップの条件がうまくいかないのです。

だから、まだ履歴に残ってないのにすぐに注文が取られてしまうんです!全然理解できません。

そして、この状況の方が良いのですこの仕掛けがあれば、少なくとも、すでに履歴に残っているオーダーは修正されます。

しかし、5回や10回に1回はナホドカが真値を とらず、それ以上の修正が 発生しないのです

チケットで注文を選択 する場合、プールは考慮されません。従って、MODE_HISTORYを記述しても全く意味がない。チケットに従って注文が選択された後、必ずその終了時刻も確認する必要があります OrderCloseTime() - これがゼロより高ければ、注文は終了して履歴から選択され、ゼロであれば、注文はまだ市場にあり、市場のポジション一覧から選択されます。

このチェックは、お使いの回線にはありません。

if (OrderSelect(tacket, SELECT_BY_TICKET , MODE_HISTORY)) 
if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;     // Находим ордер, сработавший именно по тейкпрофиту 

小さく始めることです。

if (OrderSelect(tacket, SELECT_BY_TICKET)) {
   if (OrderCloseTime()>0) {                         // Убедились, что ордер выбран из истории
      // Тут ищете далее то, что вам необходимо ... а закрылся ли он по тейку ...
      }
   }

そして、あなたは幸せになる...

 
Dimka-novitsek:

おはようございます。

トレーリングストップの条件がうまくいかないのです。

だから、まだ履歴に残ってないのにすぐに注文が取られてしまうんです!全然理解できません。

そして、この状況の方が良いのですこの仕掛けがあれば、少なくとも、すでに履歴に残っているオーダーは修正されます。

しかし、ナホトカは5から10のうち一度だけ真価を 発揮し、それ以上の修正は ないのです

!- テケット、トケット、タケットなどなど、チケットに名前をつけるのはあなたの工夫次第です。自分でもこの名前に戸惑わないのか!?私からのアドバイス - 混乱を避けるために、そうしないことです。このようにロッホ・ブランディングは、例えば、ADIDASとADITAS...というように成り立っています。

また、例えば、フラグがたくさんあっても意味がありません。

     if (OrderSelect (ticket, SELECT_BY_TICKET))
     {
         //---- Проверяем закрыт этот ордер или нет
         if (OrderCloseTime > 0)
         {
             //---- Находим ордер, сработавший именно по тейкпрофиту 
             if (NormalizeDouble (OrderTakeProfit()- OrderClosePrice()), Digits) == 0.0)
             {
                 if (OrderSelect (tucket, SELECT_BY_TICKET))
                 {
                     double ld_SL = NormalizeDouble (Bid - treylingstop * Point, Digits);
                     if (NormalizeDouble (ld_SL - OrderStopLoss(), Digits) > 0.0)
                     {
                         Print ("втораямодифи    " );
                         OrderModify (tucket, OrderOpenPrice(), ld_SL, OrderTakeProfit(), 0, CLR_NONE);
                     }
                 }
             }
         }
     }
これは、あなたのコードを元にした簡単なアドリブです。
 
ありがとうございました!!!!!!!!!!
 
Dimka-novitsek:
そうそう!!!
ディムカノビッチェク

ここでは、バイを修正しない方法-そしてそれはジル条件であり、また、常に動作するわけではありません。

ここがそうです。


最後の取引、そして一般的に与えられたチャート上のすべての取引は、SLで終了しているので、それは変更されるべきではありません。
 
lottamer:

は、KimのライブラリのSecondsAfterOpenLastPos()関数がこれらの数字1355319542を返すことがわかりました、そして最後の数字は本当に秒です...あなたはそれらがどのように変化するか見ることができます......。

本当に秒読みなら43年...半...ですね。で、この関数は最後のトランザクションがCLOSEDされた時刻からの秒数を返すはずです...。

OrderOpenTimeも同じ形式で時間を与えることが判明しましたが...どのように逆に変換するのですか? 明らかに現在の時刻を取り、OrderOpenTimeを減算する必要があります。現在の時刻を知るにはどうしたらよいですか?


もし、あなたがより慣れている形式で時間を見たい場合は、変換機能を使用してください。日付と時刻のヘルプセクションに多くの変換機能があり、日、時間、分、時間など、さまざまな形式で出力を表示することができます...

ゼロバーの場合、iClose関数で最後のサーバー時刻が 返されます。またはClose[0] だけ。

この関数は、最後に判明した価格を返します。時間は戻る

TimeCurrent() )
 
rigonich:


この時刻の形式は、コンピュータが扱うことができる唯一の形式であることは、すでに説明したとおりです。 もっと見慣れた形式で時刻を見たい場合は、翻訳機能を使います。日付と時刻のヘルプセクションにたくさんありますし、日、時間、分、時間を別々の形式で出力するなど、好きなようにできます。

ゼロバーの場合、iClose関数で最後のサーバー時刻が返されます。またはClose[0] だけ。

この関数は、最後に判明した価格を返します。時間は戻る

TimeCurrent() )


削除してしまいましたが、何とか投稿を捕捉しました :)))...時間は単純にTimeCurrent()-OrderOpenTime()を引くことで求められることが分かりました。
 
lottamer:

削除してしまいましたが...TimeCurrent()-OrderOpenTime()の差し引きで時間がわかることがわかったので、なんとか投稿を捕捉しました。)

もし質問に答えないでほしいなら、そう言ってください。
 

ポジションは1つしか持っていないので、外れることはないのですが・・・。

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))

 
rigonich:

もし、質問に答えないでほしいのなら、そう言ってください。

いやいや!!したいけど、余計なことはしてほしくない...もう本当に助かってる...だから、自分でなんとか調べたことは(聞くだけ聞いて何もしないで座ってるわけにはいかない!)-さっさと削除します.........。