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

 
cyclik33:


コードが正しく動作しない理由は言ったはずです - あなたが間違った場所に置いたから...:)ホイールのネジを外してトランクに入れると、ホイールがあってドアが閉まっても遠くには行けないと思うのですが...。:)
 
T-G:

エキスパートアドバイザーがM1で取引しているときに、注文を開くシグナルが来て、ストップがショートで、注文がスリップで閉じられたとします。

同じ分単位で再度注文を開けないようにするにはどうしたらよいでしょうか。

新しいキャンドルの 開きを確認する。新しいものなら開けるし、古いものなら開けないし...。
 
ToLik_SRGV:

OrderSelect()の数値カウントは0から始まります。そして、1ということは、マーケットには1つしかないのに、2つ目の注文を探しているわけですから、うまくいかないわけです。

ありがとうございます、忘れてました。
 
ToLik_SRGV:

Borisさん、コードの小さな修正ですが、元のロットに戻るときに配列の位置をリセットすることを追加するのを忘れていました。


Tolikさん、アドバイスお願いします!不思議な動きをします。 負けた後、初期ロットをオープンすることがあり、このロットも負けた場合、再び初期ロットをオープンすることがあります。

そして、最初のロスの後、0.4かかることもある。

何か間違ったものを入れてしまったのでしょうか?

 
cyclik33:


私はこのコードに非常に奇妙な方法で取り組んでいます。 1つ負けた後に最初のロットを開くことがあり、これがまた負けている場合は、最初のロットを開くことがあります。
そして、最初の損失が0.4を取る後に時々。
何か間違ったものを入れてしまったのでしょうか?

Borisさん、コードの小さな修正ですが、元のロットに戻るときに配列の位置をリセットするのを忘れていました。

//+------------------------------------------------------------------+
double getMartinLot(double lot, double arrayLot[]){//ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if(loop == ArraySize(arrayLot))loop = 0;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if(balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
      loop = 0;
   }else{
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return(save_Lot);
}
//+------------------------------------------------------------------+
 
artmedia70:
なぜ正常に動作しないのか、その理由をお話しましたが、入れる場所を間違えているのです...。:)ホイールのネジを外してトランクに入れると、ホイールがあってドアが閉まるように見えるけど、遠くには行けないと思う...。:)


まったくもって同感です。しかし、私はあなたのコードを批判しているわけではなく、問題があると言っただけです)ところで、私はまた問題があるのですが、もし差し支えなければ-何が間違っているのか教えてください、私は何が間違っているのか本当に理解したいのです。

extern colorOpenBuy = Blue;
extern colorCloseBuy = Aqua;
extern colorOpenSell = Red;
extern colorCloseSell = Aqua;


void deinit() {
Comment(");
}.

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+--------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)){
Comment("トレードの時間はまだ来ていません!");
return(0);

言われた通りStart関数の前に貼り付けたのですが、コンパイル時に 'Lot' - initialization expected D:♪MetaTrader ♪Prostoj ♪2.mq4 (39, 20) と出てしまいます。

それが何なのか、教えてください。

 
artmedia70:
新しいキャンドルの開きを確認する。新しければ開く、古ければ開かない...。
どうすればよいのでしょうか?
 
cyclik33:


まったくもって同感です。しかし、私はあなたのコードを批判しているわけではなく、いくつかの問題があると言っているのです。 ところで、私は別の問題を抱えています。もしよろしければ、何が間違っているのか、教えてください。

外部カラー colorOpenBuy = Blue;
外部カラー colorCloseBuy = Aqua;
extern colorOpenSell = Red;
外部カラー colorCloseSell = Aqua;


void deinit() {
Comment(")です。
}

double Lots_New = Lot;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){。
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)){
Comment("貿易の時間はまだ来ていない!");
return(0)です。

教えていただいたように、Start関数の前にここに挿入したのですが、コンパイル時に 'Lot' - initialization expected D:\MetaTrader⇄Prostoj_2.mq4 (39, 20) と表示されます。

それが何なのか、教えてください。

Lotはコードのどこで初期化されていますか?

extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;
extern double Lot = 0.1;
double Lots_New;

void deinit() {
Comment("");
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);

次に、大鹿をチェックした後だけ、Lots_Newを先に書いたように変更するか、value = Lotとします。

 

ああ...配列に苦労している...。インダクタのデータを配列に埋めようと すると、小さな関数がブーブー言いながら膠着状態に...。何が間違っているのか、教えてください。

double      TempIND[50]; 
void   SaveDataIND(double TempIND[], int nBars)
{
   ArrayResize(TempIND,nBars);
   for (int j=0; j<=nBars-1; j++)
      {
         TempIND[j]=iAD(NULL,PERIOD_M5,j);       // ЗДЕСЬ ОШИБКА array item cannot be assigned
         Print("TempIND[",j,"] = ",TempIND[j]);
      }

}

私はこのように呼んでいます。

SaveDataIND(TempIND, 20);
どこが問題なのか?
 
artmedia70:

ああ...配列に苦労している...。インダクタのデータを配列に埋めようとすると、小さな関数がブーブー言いながら膠着状態に...。何が間違っているのか、教えてください。

私はこのように呼んでいます。

一体どこに問題があるのでしょうか?



関数にパラメータを渡す ときに、SaveDataIND(double TempIND[])と渡すと、あなたの犬。

double TempIND[ ] は、実際には関数用の新しい配列ですが、パラメータを変更する権利がないため、SaveDataIND(double& TempIND[]) を試してみてください。