[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 49

 
xruss >> :

後でコードの一部を掲載しますが、チェックボックスがあった方がカッコイイと思うのですが、mql4ではどう書けばいいのでしょうか?

https://book.mql4.com/ru/variables/arrays

この章の最後に、新しいバーを形成する事実を例に、フラグの使用原理が非常によく説明されている。同様に、例えばBuy_AllowedやSell_Allowedのように、特定のタイプの取引を開く可能性を示すbool型の変数を2つ作成します。デフォルトでは、これらの変数にtrueの値を割り当てています。買いシグナルが発生し、ポジションを開くことができた場合、Buy_Allowed=falseとします。この場合、OrderSend()の前に、Buy_Allowed=trueの場合のみ買い取引が実行されるという条件を追加しています。逆信号を受信した場合、Buy_Allowed=trueのフラグを破棄します。同じ方式が売り取引にも使用されますが、Sell_Allowedフラグが使用されます。

 
Everlost >> :

https://book.mql4.com/ru/variables/arrays

この章の最後に、新しいバーを形成する事実を例にして、フラグの使用原理を非常によく説明している。類似の方法として、例えばBuy_AllowedとSell_Allowedのように、特定のタイプの取引の開始を許可することを示すbool型の2つの変数を作成します。デフォルトでは、これらの変数にtrueの値を割り当てています。買いシグナルが発生し、ポジションを開くことができた場合、Buy_Allowed=falseとします。この場合、OrderSend()の前に、Buy_Allowed=trueの場合のみ買い取引が実行されるという条件を追加します。逆信号を受信した場合、Buy_Allowed=trueのフラグを破棄します。同じ方式が売り取引にも使用されますが、Sell_Allowedフラグが使用されます。

ありがとうございます。前回の記事でコードの一部を掲載しました。

 

このサイトからDaydream EAをダウンロード済みです。テスト時は最大ロット0.1、残高1万円でした。Meta Trader 4 222のGBPUSD 15でテストしてみました。

2つ目の質問:テストレポートにある「エラーの不一致」とは何ですか?

3つ目の質問ですが、なぜシグナルが出ないのでしょうか? これは1つ目の質問と何らかの関係がある、つまりプログラムの中で何かが不具合を起こしているという印象です。 EURUSD M1 MACD Sample(標準装備)を使っていますが、MACD OpenLevelを1まで下げても何も出なかったのです。

使い方がわからない。

 
xruss >> :

ありがとうございます、教育していきます。前回の記事でコードの一部を掲載しました。

int    ORDtype=-1, ORDtime=0;
double ORDprofit;

for (int i=OrdersHistoryTotal()-1; i>=0; i--) {
  if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderSymbol()==Symbol()) {
      if (OrderCloseTime()!=0 && OrderCloseTime()> ORDtime) {
        ORDtime=OrderCloseTime();
        ORDtype=OrderType();
        ORDprofit=OrderProfit();
      }
    }
  }
}

//........

if ( ORDtype==-1)
{
  // В истории не нашлось подходящих ордеров
}

if ( ORDtype==OP_SELL)
{
  // Последним был закрыт Sell
}

if ( ORDtype==OP_BUY)
{
  // Последним был закрыт Buy
}
あなたのコードの作業用バリアント。チェック (OrderCloseTime()>time) を削除してはいけません。 これがないと、全体の意味が失われます。検索中の各注文の終了時刻を、先に見つかった注文のうち最も古い終了時刻と比較して、最新の終了注文を選択しているのです。これは ORDtime 変数に保存されています。しかし、あなたは今、歴史のすべての順序を経た。ORDprofitの条件もありましたが、それは自分で追加してください。:)
 
Everlost >> :
あなたのコードの作業バージョン。なぜなら、チェック (OrderCloseTime()>time) がないと、全体の意味が失われるからです。検索中の各注文の終了時刻を、先に見つかった注文のうち最も古い時刻と比較して、最新の終了した注文を選択しているのです。ORDprofitの条件もありましたが、それは自分で追加してください。:)

はい、最後の注文で利益が出た場合、同じ方向への注文を禁止するようにしました :)

どうもありがとうございました!!))

 
zas писал(а)>>

第2問:テストレポートにおける「不一致エラー」とは何か?

何度も聞かれる、検索しやすいように...。

zas さんが書き込みました >>1

Meta Trader 4 222でGBPUSD 15を使ってみました。 面白いことに、別のPCで1ロットのテストはOKでした。 何がトリックなのでしょうか?

もしかしたら、他のPCのMT4は他のブローカーの口座に接続されていて、ブローカーも違えば取引条件も違うかもしれない...。それともEAがランダムにロットを決定しているのでしょうか?)Expert Advisorのコード、ステートメントが必要な場合があり、正確な答えが得られます。

zasが 書いた(a)>>。

私の印象では、最初の質問と何らかの関係がある、つまり、プログラムの中で何かが不具合を起こしているようです。 EURUSD M1 MACD Sample(標準装備)を使って、MACD OpenLevelを1まで下げてみましたが、何も出ませんでした。

テスターのことならテスターのログを見てください。パラメータのセットと、テストEAの結果(シグナルがないところ)を投稿する。プログラムの不具合ではなく、経験不足によるクラッチの不具合のようです...。

 
VladislavVG >> :

一つの選択肢として:

取引開始時にbool変数NeedAlertをtrueに設定する。


ありがとうございます、そして私はそれが動作しないだろうと思った - ループが動作しないように - それは私が中括弧を忘れて判明した))

 
ここで質問ですが、20pipsの場合の推定利益が現在の預かり金の4%になるようにロットサイズを計算するにはどうしたらよいですか?
 
xruss писал(а)>>

ありがとうございます、教育していきます。前回の記事でコードの一部を掲載しました。

//+------------------------------------------------------------------+
// Проверка последнего ордера по условию                             |
//+------------------------------------------------------------------+
bool LastCloseOrd(string Sy = "",//Если Sy=="" на принадлежность символу не проверяем
                  int  Type = -1,//Если Typ==-1 любой тип ордера
                  int Magic = -1,//Если Magic=-1любой магик
                  int Pr_Ls =  0){//Если Pr_Ls =0 без проверки на профит, если <0 то фильтр лосевых , если >0 то фильтр профитных ордеров
                  int time=0;
if(OrdersHistoryTotal()<1){return(false);}//Если нет закрытых ордеров выходим 
  for(int i=0; i<OrdersHistoryTotal(); i++){//Перебираем закрытые ордера
    if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){//Выбираем ордер из истории
      if(OrderCloseTime()!=0){//Если ордер уже закрыт
        if( Sy==""||OrderSymbol()== Sy){//если совпадает символ, или нет проверки на символ
          if( Type==-1||OrderType()== Type){//если совпадает тип, или нет проверки на тип
            if( Magic==-1||OrderMagicNumber()== Magic){//если совпадает магик , или не проверки на магик
              if(OrderCloseTime()> time){//если время закрытия ордера больше чем предыдущее
                time=OrderCloseTime();//записываем время закрытия (в конце цикла у нас в ловушке булет сидеть последний закрытый ордер
              }                                                  //попадающий под все условия выставленных фильтров)
            }
          }
        }
      }
    }
  }  
if( Pr_Ls==0&&time!=0){return(true);}//если нет условия на профит-лосс подтверждаем наличие ордера
if( Pr_Ls<0&&OrderProfit()<0){return(true);}//если ордер лосевый подтверждаем наличие ордера
if( Pr_Ls>0&&OrderProfit()>0){return(true);}//если ордер профитный подтверждаем наличие ордера
return(false);//нет ни одного попадающего под выставленные условия ордера
} 
 

テスターのエラーについてです......。

どなたかご存知の方、アドバイスをお願いします...。

')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (64, 37)
')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (65, 37)
64.37と65.37という数字はどういう意味なのか?