[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 155

 
vovander:
OrderType() が返す値はどのようなタイプですか?ありがとうございました。

intOrderType( )
 

ボードに外部変数externを付けているのですが、2つのペアに付けて片方のexternを変更すると、なぜかもう片方のexternも変更されます(

文字列のパラメータでは、初期化の最後にシンボル 名を追加することで解決しました。 しかし、整数やダブ ルの場合はどうなるのでしょうか?

---

もうひとつ、キムの機能についての質問です。

ある

//| sy - 楽器名 ( "" - 任意の記号, |
//| NULL - 現在の記号 ) |
//| op - 操作 ( -1 - 任意の位置 ) |
//| mn - MagicNumber ( -1 - 任意のマジック ) |
//+--------------------------------------------------------+
void SimpleTrailing(string sy="",intop=-1,intmn=-1)

つまり、SimpleTrailing()を呼び出すと、この関数はすべてのペアに対して機能します。

が、SimpleTrailing(NULL)を呼び出すと、そのチャートにフクロウが描かれているものだけ動作するのですね。

この関数の中でNULLへの言及は見つかりませんでした。

それとも SimpleTrailing(NULL) と SimpleTrailing() は同じものなのでしょうか?

 
Omm:

ダミーの質問ですが、ボードにextern変数があります。2つのペアにリンクして、片方のexternを変更すると、なぜかもう片方も変更されます(

文字列のパラメータについては、初期化時に関数の末尾にシンボル名を付加するという解決策を見つけました。

---

キム・ファンクションについて、もうひとつ質問です。


つまり、SimpleTrailing()を呼び出すと、その関数はすべてのペアに対して機能します。

が、SimpleTrailing(NULL)を呼ぶと、owlとのペアにしか効かないのでは?

これは文書化されていない機能なのでしょうか?

それとも SimpleTrailing(NULL) と SimpleTrailing() は同じものなのでしょうか?

1.不可能を可能にしている!- ということは、何か「間違った」ことを伝えているに違いない。EAが識別子-OrderMagicNumber() を使用していないことが推測されます。

2.コードを見ました - 何かがSimpleTrailing()を使用するとSimpleTrailing(NULL)と同じになることを告げています。確認するのはあなた次第です。そして、この関数をチャートツールで動作させるには、次のように呼び出します: SimpleTrailing (Symbol())。

 

1.このEA http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=42

マジックは形式的にはあるのですが(なぜかexternにもある)、どうすればいいのかがわかりません。

BreakevenとTrawlを追加しようとしているところです。

2.疑問が解決される。

別のf-fiで見つけました if (sy=="0") sy=Symbol();

作者はこれに加えるのを忘れたのだろう。

 

必要なのは損益分岐関数https://forum.mql4.com/ru/11287/page55#11315

ワンパターン化する

コンサバトリーでは何をいじればいいのでしょうか?

if(ExistPositions(Symbol())の場合)
{
for (int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol()==Symbol()の場合)
MovingInWL(シンボル())

}

}

 

皆さんは機能をお持ちですか。ボリュームが違うオーダーがいくつかあります。

例えば、order1=0.1, order2=0.2, order3=0.3, order4=0.4 - 取引の総量は1ロットです。

ある時点で、あるロットの合計金額の注文の一部を決済する必要があります。

例えば、私は0.5ロットを閉じる必要があります。そこで、例えば order4=0.4 と order3 の余りを閉じる関数が必要です。 あるいは order1, order2 と order3 の余りを閉じる関数が必要です。

 
Omm:

必要なのは損益分岐関数https://forum.mql4.com/ru/11287/page55#11315

ワンパターン化する

コンサバトリーでは何を直せばいいのですか?

この機能はシングルトリガーをチェックする機能を備えており、工夫する必要はありません。

    if (ExistPositions (Symbol(), -1, Magic))
    {MovingInWL (Symbol(), -1, Magic);}

そしてMovingInWL()関数は少し手を加えるべきでしょう。

void MovingInWL (string sy = "", int op = -1, int mn = -1)
{
    double po, pp, ld_BU;
    int    i, k = OrdersTotal();
//----
    if (sy = "0") sy = Symbol();
    for (i = k - 1; i >= 0; i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue;
        if (sy != "") if (OrderSymbol() != sy) continue;
        if (mn >= 0) if (mn != OrderMagicNumber()) continue;
        po = MarketInfo (OrderSymbol(), MODE_POINT);
        if (OrderType() == OP_BUY)
        {
            //---- Это условие выполняется однократно (пока БУ не установлен)
            if (OrderStopLoss() - OrderOpenPrice() < LevelWLoss * po)
            {
                pp = MarketInfo (OrderSymbol(), MODE_BID);
                if (pp - OrderOpenPrice() > LevelProfit * po)
                {
                    ld_BU = NormalizeDouble (OrderOpenPrice() + LevelWLoss * po, MarketInfo (OrderSymbol(), MODE_DIGITS));
                    ModifyOrder (-1, ld_BU, -1);
                    continue;
                }
            }
        }
        else if (OrderType() == OP_SELL)
        {
            //---- Это условие выполняется однократно (пока БУ не установлен)
            if (OrderStopLoss() == 0 || OrderOpenPrice() - OrderStopLoss() < LevelWLoss * po)
            {
                pp = MarketInfo (OrderSymbol(), MODE_ASK);
                if (OrderOpenPrice() - pp > LevelProfit * po)
                {
                    ld_BU = NormalizeDouble (OrderOpenPrice() - LevelWLoss * po, MarketInfo (OrderSymbol(), MODE_DIGITS));
                    ModifyOrder (-1, ld_BU, -1);
                }
            }
        }
    }
//----
}
 

週足ロウソクのHigh Lowインジケータで、以下のように表示されるのですが、関数を変更する方法を教えてください。

if (TimeDay(Time[i])!=TimeDay(Time[i+1]))とする。
{
if(TimeDayOfWeek(Time[i])==1)とする。

月足ローソク足の高値安値を知りたいのですが。ありがとうございました。

 

TarasBY こうはいかないんですよ。

e-TFL_V2では、start()とMovingInWL関数自体に、この2行を追加しています。

複数のポジションが開いて いる場合、ブレイクイーブンはそのうちの1つだけに設定されます。

ブレイクイーブンのポジションが閉じられると同時に、次のポジションに設定されます。

最初のメッセージで気づいたのですが、EA設定ウィンドウで異なる数値を設定しても、損益分岐点はすべてのシンボルで同じです。

シングルトリガーかどうかがわからないのですが、シングルトリガーのチェックはどこにあるのでしょうか?

p.s. 修正した関数をありがとうございました。5桁でテストしていますが、とにかくキムさんの関数はほとんど動くと思います。

p.s.s. しばらく動かしてみました。 うまくいったようです。というのも、MovingInWLのバグでした。)

p.s.s. なぜMagicをEAの外部パラメータに移動するのか理解できません。

 
メタトレーダー用の自分のサーバー、つまり自分のmtから別の人が接続できるサーバーを作るにはどうしたらいいのでしょうか?