チェック - 何がいけなかったのか? - ページ 2

 
Natalya Smirnova #:

私はバイナリーオプションのために書いているので、少し違ったやり方をしています。


これはおそらく正しいでしょう?

以下、問題点
1つの注文に対して、ターミナルに2つの行があります。


また、Expert Advisorで発注された注文は、Profit == 0となります。

 
Natalya Smirnova #:

これが問題だと思います
1つの注文に対してターミナルに2行あります。


そして、Expert Advisorが発注した注文では、Profit == 0となります。

ゼロ以下の価格をどこで見つけたのか - スクリーンショットを見せるにはどうすればいいのか?

このスクリーンショットでは見えません

 
Alexey Viktorov #:

アルゴリズム全体のアドバイスは既にされていますし、私は口出ししたくありませんし、あなたのコードも見ていませんし、同じアドバイスでも・・・しかし、この

が目に留まりました。そこで質問ですが、switch演算子を使う方が簡単で見やすいのでは?

読みやすく、わかりやすくなったと思います。もしかしたら、動作も少し速くなるかもしれません。
関数の代わりに配列volume[n]を使うとか?
とはいえ、コードの一行一行にお金を払うのであれば、そのままにしておいたほうがいいのですが :))
 
Nikolai Semko #:
関数の代わりに配列のvolume[n]を使えばいいのでは?
コードの一行一行にお金を払うのであれば、その方が良いのですが :))

そうかもしれませんね・・・私もそう思います。

 
Renat Akhtyamov #:

どこで0円以下になったのか、スクリーンショットを見せてください。

このスクリーンショットには、そのようなものはありません。


OrderProfit()を取得しようとしているのですが、0が表示されます。

その追加ラインから出たところで、利益-0.01を確認したのがこちらです。

 
Alexey Viktorov #:

そうかもしれませんね・・・私もそう思います。

お金をもらわないのは、自分のため、自己啓発のためです。仕事帰りに、グレイルクエストをするのも面白いです
 

ネガティヴな価格は、やはりないですね。

というように、利益の合計を数える(抜粋)。

必要なものが強調されている

   for(i=0;i<OrdersHistoryTotal();i++)

   {

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      {

         if(OrderType()==ORDER_TYPE_BALANCE && OrderCloseTime()>startDate)Withdrawal=Withdrawal+OrderProfit()+OrderCommission()+OrderSwap();

         if((OrderType()==ORDER_TYPE_BUY || OrderType()==ORDER_TYPE_SELL))

         {

            if(OrderCloseTime()>iTime(Symbol(),PERIOD_D1,0))hystCurrDay=hystCurrDay+OrderProfit()+OrderCommission()+OrderSwap();

            if(OrderCloseTime()<iTime(Symbol(),PERIOD_D1,0) && OrderCloseTime()>iTime(Symbol(),PERIOD_D1,1))hystPrevDay=hystPrevDay+OrderProfit()+OrderCommission()+OrderSwap();

         }

      }

   }



 
Natalya Smirnova #:
お金をもらわないのは、自分のため、自己啓発のためです。仕事帰りに、グレイルサーチをするのも面白いです

私のことは気にしないでください。私とニコライの二人だけでちょっと集まって...。

問題の本質:FXブローカーのOrderProfit()は実際の値を示さないので、注文の終値と建値の差として正負の決済注文を定義する必要があります。すでにお伝えしていることですが

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

何がいけなかったのか、確認する。

レナト・アフティアモフ, 2021.12.21 09:27

りがいかんせん

なんでやねん

bool profit = false;
         if(OrderClosePrice() > 0)
            profit = true;

         bool loss = false;
         if(OrderClosePrice() < 0)
            loss = true;

注文の終値が 0より小さくなる可能性があるのはなぜですか?

終値が始値より高い場合、買い注文はプラスになります。

買い付け時のプラスの条件(手数料、スワップは除く)はこちら。

OrderClosePrice() > OrderOpenPrice()
逆であればマイナス

 
Natalya Smirnova #:
自分自身や自己啓発のために、それほど多くのお金をもらっているわけではありません。仕事が終わってから、グレイルクエストに行くのも楽しいですよ。

そうです、ナタリアさん。あれは「コード1行でお金をもらうとき」シリーズのミームだったんです。

プログラマーには、そういうユーモアがあるんです。


あなたの場合、ファンクションは必要ありません。

double SelectVolume(int n)

変数 Volume1 ... を作成するだけです。Volume10 変数は、最初は配列 volume[10]
として形成し、その要素 volume[n] をインデックス n で参照します。
心配しないでください。ほとんどすべてのプログラマが経験していることなのです。
要は、プログラミングが本当に好きかどうかということです。感じることができます。
そうすれば、遠くまで行けるでしょう。

 
私もそう思います。プログラミングは本当に胡散臭いし、とても長期的なものだ!!!
誰もが万歳で終わるわけではない...。