エキスパートアドバイザー - 雑多な質問 - ページ 16

 

マーケットクローズ!

#1- OnTick()、Start()でButtonオブジェクトを 呼び出したことはありませんが、正常ですか?
#
2 - ボタンオブジェクト 'ANCHOR_RIGHT_UPPER' に適用することは可能ですか?
#3 - それで、私はまだ私のこの懸念事項#145の ための助けを必要とする、お願いします。

ありがとうございます。

 

#1 - I never call Button Object by OnTick(), Start(), so is it normal?

はい

#2- ボタンオブジェクト 'ANCHOR_RIGHT_UPPER' に適用することは可能ですか?

いいえ、アンカーポイントはANCHOR_LEFT_UPPERに固定されています。

#3 - それで、私はまだ私のこの懸念#145の ための助けを必要とする、お願いします。

はい、あなたは正しいです - EventSetMillisecondTimer(250)

 
honest_knave:

はい
いいえ、アンカーポイントは ANCHOR_LEFT_UPPER に固定されています。
はい、あなたは正しいです - EventSetMillisecondTimer(250)

非常に感謝しています。Big thanks man.
 

#Profit Orders Counting - Open

利益の出るポジションをすべて1つの値で計算しようとしただけなのですが。
それは私に別々の値を与える。

私は本当に私の心を失った。私はいくつかの方法を試してみて、それについて多くの研究をしたが、良い結果はない。
どうか私を助けてください、もしそれが可能なら、利益計算について もう少し説明してください、とても感謝しています。

早く良い答えが得られるといいのですが。

void profitcalcfnc()
{
    double trueprofit = 0;
    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers == false && OrderSymbol() != Symbol() ) continue;
        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            Print( "Profit: ", trueprofit );
            ObjectSetString  ( 0, "all profit counting object", OBJPROP_TEXT, DoubleToString( trueprofit, 2 ) );
        }
    }
    //---
    return;
}

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

 
trueprofit = OrderProfit() + OrderSwap() + OrderCommission();

ループの各反復で、値を追加するのではなく、trueprofitの値を上書きしています。

これを覚えておいてください。

profit = OrderProfit();

がこれに変更されました。

profit_buy += OrderProfit();
ループの各反復(各注文)で発生させたいことと、ループの後(すべての注文を確認 した後)で発生させたいことを明確にする必要があります。
 
honest_knave:
ループの各反復(各注文)で起こりたいことと、ループの後(すべての注文をチェックした後)で起こりたいことの間に明確である必要があります。

早速のご回答ありがとうございます。
疲れているのかもしれません、すみません。(ただ、どうすれば いいのかがわからないのです。)

私はもう少し私の懸念を説明する必要があります(私はどこまでできるか)。
それで、私は2つの関数を持っています。

  1. 私はそのうちの一つをボタン 機能に使っています。これをクリックすると、すべての利益ポジションが閉じます。今のところうまくいっています。( 私はそれを十分にテストすることはできません - 私のブローカーは、取引を無効にしている)
  2. 2つ目はLabel 機能で、1つの Labelオブジェクトにすべての利益を生む 値を表示させることができる。( しかし、私はそれを行うことはできません)

最後に、私はこの 私の最新のコメントコード) 利益計算関数は、両方のタイプの注文" OP_SELLとOP_BUY " ちょうど有益な計算することができますしたいと思います。

事前にありがとうございます。

 

すべての利益値を1つのラベルに表示するにはどうすればよいのでしょうか?

AcountProfit() をすべて足したものなのか、それとも個別の OrderProfit() のためのものなのか。

もし、このようなものが必要であれば


この記事を参照してください。

https://www.mql5.com/en/articles/2723

Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
  • 2016.10.17
  • Anatoli Kazharski
  • www.mql5.com
The next version of the Easy And Fast library (version 3) is presented in this article. Fixed certain flaws and added new features. More details further in the article.
 

コメントありがとうございます。
混乱させてしまい申し訳ありません。

いいえ、私はそれとは少し異なる必要があると思います。
私は私の問題を明確にするためにしようとします。

私はEURUSDの3つのポジションを持っています。そのうち2つは利益の出るポジションで、1つは損失の出るポジションです。そこで、そのうちの2つのポジションを計算する必要があります。
例:それぞれ+1.00(2つの利益ポジション=+2.00)であれば、私はすべての利益ポジションの値を取得する必要があるだけです。

Print( "Profit: ", 2.00 ); // absolutely no separately - I just need - could adds profitable values 1.00 + 1.00 = 2.00

私はちょうど私が言おうとしていることを助けるために、以下のタブを簡単に作りました。( このコメントの下にある画像ファイル )
( 英語は私の母国語ではない - 時々私はそれに苦労している )

すべて最高です。

トレードパネルタブ画像ファイル

 
double totalprofit=0;

// in your orderselect loop put
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}
 

#Profit Orders Counting - Closed

Marco vd Heijden:
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}

あなたの素晴らしいサンプルコードで、私の問題は解決しました。
ありがとうございました。



honest_knave:

ループの各反復で、trueprofit の値を追加するのではなく、上書きしています。

ループの各反復で起こりたいこと(各注文)とループの後で起こりたいこと(すべての注文をチェックした後)の間を明確にする必要があります。

ちょうど下のコードスクリプトを終えた後。
もう一度、私はあなたのコメントを確認 し、私はあなたがそれを私に説明していることを知っている。しかし、私の英語はそれを理解するために防ぐことができます。

皆さん、よろしくお願いします。

void calc()
{
    double trueprofit  = 0;
    double totalprofit = 0;

    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers != true && OrderSymbol() != Symbol() ) continue;

        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            totalprofit += OrderProfit() + OrderSwap() + OrderCommission();
            Print( "Profit: ", DoubleToString( totalprofit, 2 ) );
            ObjectSetString  ( 0, _Checkthisout_name_Label, OBJPROP_TEXT, "Total Profit: " + DoubleToString( totalprofit, 2 ) );
        }
    }
    //---
    return;
}

このコードスクリプトがうまく動作することを願っています。もし、このコードに何か問題があれば、私に知らせてください。
ありがとうございました。