特定の時間帯のローソク足の始値を取得します。 - ページ 2

 
Kane59:

OK、あなたのコードを私のEAに挿入し、それは完璧に動作します。私が望んでいたようにEAが実行されるのを見たとき、私は微笑んだ!

本当にありがとうございます。

市場が閉じているため、バックテスト中です。

しかし、問題があります。

EAが正しくポジションを開くが、買いは決して閉じられず、開くと即座に閉じられる売り。

OrderClose()が失敗したかどうか、失敗した場合はなぜ失敗したのかを知りたくありませんか? なぜOrderClose()関数の戻り値をチェックしてエラーを報告しないのですか? 買いと売りの両方がすぐに決済しようとしているのに、買いのOrderClose()が失敗していると分かるかもしれません ... ... 。

関数の戻り値とは何ですか?どのように使用 するのですか?

 

Journalタブでエラーが発生しません。


戻り値を配置します。可能でしょうか?

Close = CloseOrder(....)

if (Close < 1)

Print ("Close Failed", GetLastError())
 
Kane59:

Journalタブでエラーが発生しません。


戻り値を配置します。可能でしょうか?

Closeは別の意味を持ちます ... OrderClose()はboolを返します ...

if ( ! OrderClose(....) )

Print ("Close Failed", GetLastError())
 
RaptorUK:

Close は異なる意味を持ちます ... OrderClose() は bool を返します ...


OK OK 私はそれを行うだろう、ありがとう:)
 

挿入した。

if(OrdersTotal()>0)
            { 
               for(int i=OrdersTotal()-1; i>=0; i--)
               {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                  {
                     if(OrderMagicNumber() == MagicSH && OrderOpenTime() > iTime(Symbol(), PERIOD_H1, 1))
                     {
                        if(OrderType() == OP_BUY)
                        {
                           OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE);
                           {
                              if(! OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE))
                              {
                                 Print ("Close Buy Failed", GetLastError());
                              }
                           }
                        }
                        if(OrderType() == OP_SELL)
                        {
                           OrderClose(OrderTicket(),LotsSH, ask, 300, CLR_NONE);
                           {
                              if(! OrderClose(OrderTicket(),LotsSH, ask, 300, CLR_NONE))
                              {
                                 Print ("Close Sell Failed", GetLastError());

エラーは書き込まれませんでした。

 
Kane59:

挿入した。

エラーは書き込まれませんでした。

同じ注文を2回閉じることはできません ... ...

 OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE);            //  first attempt to close
    {
    if(! OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE))       //  second attempt to close
 

ループ条件が正しくコード化されていなかったという問題を解決しました...。

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

 

こんにちは、皆さん。

私はWHRoederによって与えられたコードを使用した、しかし私はEAが4つの異なった時間のための参照であるために1つの "#define "だけ取ることを時間と見る。

    #define HR0900 23400    // 9*3600
    #define HR1500 54000
    #define HR1900 68400
    #define HR2300 59800

私は別の方法を試してみました。

私はろうそくの参照であるIntでarraysizeを構築し、それは同じです、唯一の1つは、4つの数字、どのように私はそれを解決することができます考えられていないのですか?

 
Kane59:

OK、 あなたのコードを私のEAに挿入し、それは完璧に動作 します。私はEAが私が望んでいたように実行されるのを見たとき、私は微笑んだ!!!

WHRoederの コードを破るために何をしたのですか?
 
Kane59:

. ..どうすれば解決できるのでしょうか?

あなたのコードを表示する必要があると思います。