[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 515

 
edyuson:

責めているわけではありません、私のパズルではありません。 ただ、似たようなアルゴリズムを見つけて、私が必要としているものを、完成させようとしているだけです。https://www.mql5.com/ru/code/9927 私は何を省いたのか、何を入れたのか、です。

0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08...... 欲しい。

配列で行うものもあります
 
YOUNGA:
配列で行うものもあります


このように

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
 

こんにちは。

人々、インディケータを起動するときに、通貨ペアが利用可能かどうかを確認する方法をアドバイスしてください。

このエムクエルとの戦いはもううんざりだ。

以下はそのコードです。

[CODE]

extern string CurrencyPair = "";
string gsSymbol, gsIndiName;

bool bIndicatorError;

...

int start() {

if (StringLen(CurrencyPair) == 0)
gsSymbol = Symbol();

else

gsSymbol = CurrencyPair;

Comment(MarketInfo(gsSymbol, MODE_TRADEALLOWED)); // ЗАКОВЫКА ЗДЕСЬ, это чудо всегда возвращает 0.0000000 при старте терминала. Если же потом открыть свойства индикатора и даже ничего не поправлять в параметрах, то возвращает 1.000000

if (!MarketInfo(gsSymbol, MODE_TRADEALLOWED)) {
Alert(gsIndiName, ": Trade is not allowed for symbol [", gsSymbol,"]");
bIndicatorError = true;
return(-1);
}

}

[CODE]

もしかしたら、もっと簡単で確実な方法があるかもしれません。

一般的に、基本的な機能が動作する言語でプログラムを書いて、その後動作しなくなるというのは理解できません。

 
パラメータをカスタマイズできるスクリプトを作ることは可能かどうか教えてください。実行時にパラメータの入力を促すスクリプトをどこかで見たことがあるような気がします。
 
sss2019:
パラメータをカスタマイズできるスクリプトを作ることが可能かどうか教えてください。実行時にパラメータの入力を促すスクリプトをどこかで見たことがあるような気がします。
スクリプト内で外部パラメータをexternにする
 
artmedia70:
スクリプトでexternパラメータをexternにする


パラメータを作成しました

extern string StartTime = "2011.01.01";
extern string EndTime = "2011.01.25";

が、なぜかスクリプトは実行前に設定を表示しません。

 
Dobr:


このように

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
0.01,0.02,0.04,0.08,0.16...0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......が必要だ。
 
sss2019:


パラメータを作りました

が、なぜか実行前にスクリプトが設定を表示しない

https://docs.mql4.com/ru/basis/preprosessor/compilation
 
edyuson:
0.01, 0.02, 0.04, 0.08, 0.16...0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......が必要だ。


EXAMPLEと書いたのは...。;)

より正確には、こちらです。

double mas[3]={0,0,0};
int q=0;
int w=0;
int z=0;
for (z=OrdersHistoryTotal()-1;z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q==3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]==lot && mas[1]==lot && mas[2]==lot) w=1;
if (w==1) lot=OrderLots()*2;
 
ForexTader:


一般的に、基本的な機能が動作する言語でプログラムを書いて、それが動作しないというのは理解できない。


チェックの一部をinitからstartに移してみるのもよいでしょう。また、端末の状態なども 確認することができます。