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

 
gordeef:

そのまま反転や補正をするのは気を使いますね。しかし、トレンドの枯渇に関しては私も興味があり、フォーラムを彷徨い、CodeBaseを見ましたが、このトピックに関するインデックスに出会うことはありませんでした。あなたの結果を読むのは興味深いことです。もう一つ質問があります。損失と利益をコントロールするEAが送られてきました。写真のように動作するはずですが、質問ですが、15ポイントの利益があり、価格はさらに高くなる可能性があります。一つの取引で利益を増やすと、EAの一般的な計算と動作が壊れる可能性がありますか?
その答えは、私のExpert Advisorの腹の中にあるのかもしれない...。もしかしたら、もっと経験豊富な同志が答えてくれるかもしれない...。私はまだ初心者ですが...。:)
 
artmedia70:

OKです。ビクターさん、ありがとうございました。今のところ、正常に動作しています。今のところ、長い間つけていなかったからですが、以前はTrend Upを出力してもらったことはありません。今なんです。


やっぱり、一人のソーサラーワナビーには、必ずもっと強いソーサラーワナビーがいるんだな・・・。:)

もちろん冗談ですが、、、。ビクター、私はただやみくもに正しい解決策をコピーするのではなく、どこに犬が隠れているのか、問題の本質は何か、この私には理解できないコードの動作は何か、それを見つけ出して理解 したいのです。


ロジックに問題がある。それ以上はない。ブロックダイヤグラムを描いてみる。役立つ
 

もう一つ質問なのですが、最初はN行でやっていたのですが、そのうちの1行が余計で、数値のパーセント形式で括弧書きにしたほうが適切だと気づき、それを削除してちょうど余裕があるところに隣に入れました。

最初はそんな感じでしたね。


そして、今がその状態です。


過去の出来事の反響に悩まされる...。EAを初めて起動したとき、新しいティックが到着する前に、常に 元々あったものを表示します...長い間、コードには入っていないけれども。幽霊はどこから来るのか?

 
artmedia70:

もう一つ質問なのですが、最初はN行でやっていたのですが、そのうちの1行が余計で、数値のパーセント形式で括弧書きにしたほうが適切だと気づき、それを削除してちょうど余裕があるところに隣に入れました。

最初はそんな感じでしたね。


そして、今がその状態です。


過去の出来事の反響に悩まされる...。EAを初めて起動したとき、新しいティックが到着する前に、常に 元々あったものを表示します...長い間、コードには入っていないけれども。幽霊はどこから来るのか?





コードを見なければならない。ロジックを分解してみる。
 
Vinin:

論理的な問題。それ以上はない。ブロックダイヤグラムを描いてみる。ヘルプ

:):)ありがとうございます...え...もう、そんな「タータン」を床に敷き詰めて...。マンマ・ミーア!三行にはあまり論理性がないように思います。1番目ならやる、1番目をやらないなら当然次は2番目が来る、というチェックの仕方が判明しました。2番目が失敗したら3番目が続く...。

いや...1stならこんな感じかな...。そうでなければ、2番目ならso-c、そうでなければ、1番目でも2番目でもなければ3番目、1番目でも2番目でも3番目でもなければ、論理の誤りを探す......という具合です。

ああ...私自身、完全に混乱しています...。さて、Victorさん、あなたの足し算は正しく動作しています。では、なぜこの「さもなければ」が発生する場所に、とにかくもう一つelse 演算子が必要なのか、頭を悩ませた後に理解しようと思います......。

アドバイスありがとうございました。

 
Vinin:

コードを見なければならない。ロジックを整理すること。

ロジックはほとんどなく、順番に行を出力していくだけの簡単なものですが......。

/--------------------------------------------------------------- 1 --
// Функция вывода на экран графических сообщений.
//--------------------------------------------------------------- 2 --
  int Informations()
  {
   int   Win_ind;                     // Номер окна индикатора
   int   x,y;
   
   trH4     =Trend_PSAR(NULL,240);  // Четырёхчасовой тренд
   trH1     =Trend_PSAR(NULL,60);   // Часовой тренд
   trM30    =Trend_PSAR(NULL,30);   // Получасовой тренд
   trM15    =Trend_PSAR(NULL,15);   // 15-ти минутный тренд

//--------------------------------------------------------------- 3 --
   Win_ind= WindowFind("Info");        // Ищем номер окна индикатора
   if (Win_ind<0)return;               // Если такого окна нет, уходим
//--------------------------------------------------------------- 4 --
   x =10; y =17;
   ObjectCreate("Equ",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Equ",OBJPROP_XDISTANCE,x);
   ObjectSet("Equ",OBJPROP_YDISTANCE,y);
   ObjectSetText("Equ",    "Свободные средства",9,"Tahoma",Gold);
   
   ObjectCreate("EquVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("EquVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("EquVal",OBJPROP_YDISTANCE,y);
   ObjectSetText("EquVal",DoubleToStr(Equ_NEW,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("Prof",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Prof",OBJPROP_XDISTANCE,x);
   ObjectSet("Prof",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("Prof",   "Уровень фиксации прибыли (      %)",9,"Tahoma",Gold);
   
   ObjectCreate("ProfVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ProfVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("ProfVal",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("ProfVal", DoubleToStr(Equ_OLD+EquPerc,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------    
   ObjectCreate("Perc",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Perc",OBJPROP_XDISTANCE,x*18);
   ObjectSet("Perc",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("Perc", DoubleToStr(PercentEquityForClose,1),9,"Tahoma",Yellow);
   
//--------------------------------------------------------------------   
   ObjectCreate("Tral",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Tral",OBJPROP_XDISTANCE,x);
   ObjectSet("Tral",OBJPROP_YDISTANCE,y*3);
   ObjectSetText("Tral",   "Уровень включения трала",9,"Tahoma",Gold);
   
   ObjectCreate("TralVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TralVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("TralVal",OBJPROP_YDISTANCE,y*3);
   ObjectSetText("TralVal", DoubleToStr(Equ_OLD-EquPerc,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("Wloss",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Wloss",OBJPROP_XDISTANCE,x);
   ObjectSet("Wloss",OBJPROP_YDISTANCE,y*4);
   ObjectSetText("Wloss",  "Порог выставления безубытка",9,"Tahoma",Gold);
   
   ObjectCreate("WlossVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("WlossVal",OBJPROP_YDISTANCE,y*4);
   ObjectSetText("WlossVal", DoubleToStr(LevelProfit,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("WlossPP",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossPP",OBJPROP_XDISTANCE,x);
   ObjectSet("WlossPP",OBJPROP_YDISTANCE,y*5);
   ObjectSetText("WlossPP","Размер безубытка в пунктах",9,"Tahoma",Gold);
   
   ObjectCreate("WlossPPVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossPPVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("WlossPPVal",OBJPROP_YDISTANCE,y*5);
   ObjectSetText("WlossPPVal",DoubleToStr(LevelWLoss,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("ATR",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ATR",OBJPROP_XDISTANCE,x);
   ObjectSet("ATR",OBJPROP_YDISTANCE,y*6);
   ObjectSetText("ATR",    "Волатильность рынка",9,"Tahoma",Gold);
   
   ObjectCreate("ATRVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ATRVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("ATRVal",OBJPROP_YDISTANCE,y*6);
   ObjectSetText("ATRVal", DoubleToStr(VolATR,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("TP",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TP",OBJPROP_XDISTANCE,x);
   ObjectSet("TP",OBJPROP_YDISTANCE,y*7);
   ObjectSetText("TP",     "Размер Take Profit",9,"Tahoma",Gold);
   
   ObjectCreate("TPVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TPVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("TPVal",OBJPROP_YDISTANCE,y*7);
   ObjectSetText("TPVal", DoubleToStr(TPatr,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("trH4",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trH4",OBJPROP_XDISTANCE,x);
   ObjectSet("trH4",OBJPROP_YDISTANCE,y*9);
   
   ObjectCreate("ArrowH4",OBJ_LABEL,Win_ind,0,0,0,0);
   ObjectSet("ArrowH4",OBJPROP_XDISTANCE,x*8);
   ObjectSet("ArrowH4",OBJPROP_YDISTANCE,y*9);

   if (trH4==1)
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",Lime);
         ObjectSetText("ArrowH4",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",Lime);
      }
   else if (trH4==-1)
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowH4",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",LightGray);
         ObjectSetText("ArrowH4",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trH1",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trH1",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trH1",OBJPROP_YDISTANCE,y*9);
   
   ObjectCreate("ArrowH1",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowH1",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowH1",OBJPROP_YDISTANCE,y*9);
   
   if (trH1==1)
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",Lime);
         ObjectSetText("ArrowH1",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",Lime);
      }
   else if (trH1==-1)
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowH1",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",LightGray);
         ObjectSetText("ArrowH1",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trM30",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM30",OBJPROP_XDISTANCE,x);
   ObjectSet("trM30",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM30",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM30",OBJPROP_XDISTANCE,x*8);
   ObjectSet("ArrowM30",OBJPROP_YDISTANCE,y*10);
   
   if (trM30==1)
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",Lime);
         ObjectSetText("ArrowM30",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",Lime);
      }
   else if (trM30==-1)
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM30",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",LightGray);
         ObjectSetText("ArrowM30",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   else if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
/*
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }
*/
//--------------------------------------------------------------------   
   

//--------------------------------------------------------------------   
   WindowRedraw();                      // Перерисовываем все объекты
   return;
  }
//--------------------------------------------------------------- 9 --
 

人々は、エキスパート-アドバイザーの準備ができて、作業(ないグリッチ)テンプレートを共有してください、それだけで必要に応じて反対側にオープンポジションを閉じる可能性と、取引戦略を変更することが可能であるように(反転、しかしので、条件の買い/売りは、他のを介してではなく、個別に条件を規定する可能性を持つこと。

if condition to buy
{
Opn_B=true; // Open Buy crit.
Cls_S=true; // Close Sell crit.売り
}
売り条件
{
Opn_S=true; // 基準値オープン 売り
Cls_B=true; // 基準値クローズ 買い 購入基準
}.)、またはTP/SLでポジションを閉じ ます。

OmegaからMTに取引戦略を移動できない、バッファやシュマッファー、遠回しの配列や勘定科目、Expert Advisorのオープン/クローズやエラーの勘定科目などです。

回答してくださった皆様、ありがとうございました。

 
Craft:

EAのテンプレートは、必要に応じて、反対側(反転)のオープンポジションをクローズする機能、またはTP/SLによって、取引戦略を変更することができるように、準備ができて、動作している人々を共有してください。

注文会計、開閉ブロック、エラー会計と頭をぐるぐるしています。

その答えは、私が長い間「汗水たらして」やってきたからです。戦略を試し、すぐに変更したい場合に限って、注文書は脇に置くべきだし、エラーも棚上げにすべきです。教科書に書いてあることをそのままコピーして、そのままにしておけばいいんです。Sergei Kovalev氏のチュートリアルに従えば、Trade()とCriterion()でだけ動作します。Criterion() - ストラテジーのエントリーポイントを見つける、Trade() -ポジションをオープン/クローズ する。それらを使って作業し、変更することは、戦略をテストするのに十分です。そして、プログラミングが得意になると、これが何のためにあるのか、どういう仕組みになっているのかがわかって くるので、自分なりの機能を持つようになる...。
 
artmedia70:
私自身、長い間「悩んでいた」のでお答えします--戦略をテストし、素早く変更する場合に限り、オーダー会計を省いて、エラー会計も棚上げにすればいいのです。教科書に書いてあることをそのままコピーして、そのままにしておけばいいんです。Sergei Kovalev氏のチュートリアルに従えば、Trade()とCriterion()でだけ動作します。Criterion() - ストラテジーのエントリーポイントを見つける、Trade() - ポジションをオープン/クローズする。それらを使って作業し、変更することは、戦略をテストするのに十分です。そして、プログラミングをマスターしたことで、これが何のためにあるのか、どういう仕組みになっているのかが理解 できるようになるので、自分なりの機能にたどり着く...

ありがとうございます、すべてテスト済みです、MTで本当に注文とオープン/クローズポジションを 考慮し、必要ならバランス修正しながら取引してみたいと思います。
 
Vinin:

コードを見なければならない。ロジックを分解してみる。

最も空になったインジケーターのコード...何もないところで...

 
#property indicator_separate_window
#property indicator_minimum 1
#property indicator_maximum 10
 
bool initFinished=false;
// добавляем переменную, которая будет запоминать состояние инициализации.
// false - инициализации еще не было
// true - была
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   ObjectsDeleteAll();
   // удаляем все объекты
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if(initFinished==false)
   {
      IndicatorShortName("Info");
 
      int winID=WindowFind("Info");
   
      if(winID<0)
      {
         // если номер подокна равен -1, то возникла ошибка
         Print("Чёт не могу твоего окошечка найти, пошел я отсюдова");
         return(0);
      }  
//------------------------ Тут можно рисовать ------------------------- 
 
// ----------------------- Но не нужно... ----------------

//------------------------------------------------------------------------- 
      WindowRedraw();      
            
      initFinished=true;
     
   }
   
   return(0);
}