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

 
Summus_Digitus:
皆さん、こんにちは。これは深刻で緊急の問題で、よく言われるようにインターネットをくまなく調べました......。久々にMT4を使おうと思い、使い始めて3日目です。しばらく使ってみたが、初めてのことで、何が何だかわからないという感じだった。と思っていたのですが、突然MTに行くと、新しいシステムで4つのH4チャートが表示され、間違った価格を見て、StartFX 2と比較し、タイムフレームのH1とD1を開いて待つ...というものでした。1時間待っても年単位で更新されるのですが、それがされません。"まあ、再インストールして終わり "と言うなら、"クソ食らえ "と言ってやる。"だから、誰が知っているサイトから何かのソフトウェアの更新のインジケータをダウンロードしてください"-あなたが尋ねると、私はあなたに "二度クソ "を教えてください。私は本当にお金を作り続けたいし、コンピュータのヘルプを1で絞め、その後を見ます :-)

すすり泣き!?正直なところ-読んでいて、笑いに震えながら刺すような涙がこぼれ落ちました...。
 
VladTch:

皆さん、ごきげんよう。

私の質問は簡単なようですが、すべての記事を掘り下げましたが、答えを見つけることができませんでした - return(-1)演算子はどのように機能するのでしょうか?どこに制御を渡すのか?例えばこのコードでは

else return(0);

ゼロを括弧で囲んだ場合と括弧をつけない場合では、すべてがクリアに見える。しかし、(-1)はどうでしょう。

ご返信ありがとうございます。:)

特殊 機能は一般機能です。ユーザー定義関数のように呼び出すことができる。しかし、ひとつだけ特殊な点があります。システムコール時にパラメータと戻り値を渡さない。

 
Summus_Digitus:
皆さん、こんにちは。これは深刻で緊急の問題で、よく言われるようにインターネットをくまなく調べました......。久々にMT4を使おうと思い、使い始めて3日目です。しばらく使ってみたが、初めてのことで、何が何だかわからないという感じだった。と思っていたのですが、突然MTに行くと、新しいシステムで4つのH4チャートが表示され、間違った価格を見て、StartFX 2と比較し、タイムフレームのH1とD1を開いて待つ...というものでした。1時間待っても年単位で更新されるのですが、それがされません。"まあ、再インストールして終わり "と言うなら、"クソ食らえ "と言ってやる。"だから、どこのサイトかわからないようなソフトウェアの更新のインジケータをダウンロードする"-あなたが尋ねると、私はあなたに "二度クソ "と言うでしょう。私は本当にお金を作り続けたいし、コンピュータのヘルプを1で絞め、その後を見ます :-)

アナルへ!!!
 

なぜ数字を描いてはいけないのか?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

なぜ数字を描いてはいけないのか?

 

変だな、質問があるのかと思った。

コンパイル中です!

 
Elektronik:

なぜ数字を描いてはいけないのか?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

なぜ数字を描いてはいけないのか?

塗ったはいいが、色を変えるには、同じ色の別のオブジェクトを作らなければならないのですそして、オブジェクトを変更すると、視覚的に色が変化する! そういうことですね。それとも、別の意見があるのでしょうか?私自身は、こうしてマシュカで色替えをした程度です。
 

数字が大事なんだと思います。

lots=StringSubstr(lot, 4, 1); 

は、ソフトが一桁と理解しているのかもしれません。

 
Elektronik:

おかしいな、質問があるのかと思った。

コンパイル中です!

ああ、追記したかったのにうっかり削除してしまった。レストアする気はなかった。

これで色を変えなければならない。

ObjectSet(nm, OBJPROP_COLOR, cl);

あなたのコードには、色を変更する場所が示されていません。

============

場所がわかったんだ...

こうすればいいんだ。

   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9)
    {
     ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
     ObjectSetText(nm, tx, fs);
     ObjectSet(nm, OBJPROP_COLOR    , cl);
     ObjectSet(nm, OBJPROP_XDISTANCE, xd);
     ObjectSet(nm, OBJPROP_YDISTANCE, yd);
     ObjectSet(nm, OBJPROP_CORNER   , cr);
     ObjectSet(nm, OBJPROP_FONTSIZE , 18);
    }

オブジェクトの再作成を恐れてはいけません。最適化されています。オブジェクトが作成された場合、変更されるのはプロパティのみです。再現されることはありません。

中括弧は1段にしてください。そうしないと、ブロックの始まりと終わりのどこに何が書いてあるかわからなくなります。

ColorOnSign()のパラメータに問題があるのでしょう。パラメータはdoubleで、文字列を挿入します。

SetLabel("ЧИСЛО", lots, ColorOnSign(StrToDouble(lots)), 5, 7, 1);

または

color ColorOnSign(string sLots)
 {
  double nu = StrToDouble(sLots);
  color lcColor=Navy;
  if (nu<4) lcColor=Green;
  if (nu>6) lcColor=Red;
  return(lcColor);
 }
 

こんにちは、助けてください!もし、コードのヒントを教えていただけるなら。

私はowlで以下のようなトローリングをしています→。

        for ( int v = OrdersTotal() - 1; v >= 0; v -- ){       
                if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)){           
                        if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){ 
                                //+=================================================================================+
                                ///+================================Обычный трал ====================================+
                                if (TralSimple){
                                        if(OrderType() == OP_SELL){
                                                if((OrderOpenPrice()-Ask) > (Point*TrailingStop)){ 
                                                        if((OrderStopLoss() > (Ask+Point*TrailingStop)) || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                                                        }
                                                }
                                        }
                                        //+=================================================================================+
                                        if(OrderType() == OP_BUY){
                                                if((Bid-OrderOpenPrice()) > (Point*TrailingStop)){
                                                        if(OrderStopLoss() < Bid-Point*TrailingStop || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);  
                                                        }
                                                }
                                        }
                                }                                  
--------------------------------------------

これで、トロールが正の目盛りごとにストップ移動するようになりました。次のようなことをしたい。

最初のパス - 正の刻みでトロールは1ポイント移動し、ステップアップを増加させます。

2回目のパス - あるステップ(5)を踏むたびに1ずつ増える変数xをとります。 そして、各パス(ステップ)*xで

など

問題は、このステップをいかにして倍率を上げながらねじ込んでいくかということです。複数のポジションがある場合、この倍率は各ポジションごとに異なる必要があります。

 
berezhnuy:

こんにちは、助けてください!コードのヒントがあれば教えてください。

私はowlで以下のようなトローリングをしています→。

これで、トロールが正の目盛りごとにストップ移動するようになりました。次のようなことをしたい。

first pass - positive tickでトロールはストップを1ポイント移動させ、ペアがどれだけ上昇したかを確認します。

2回目のパス - パスごとに1ずつ増加する変数xを取る。

など

問題は、倍率の高いステップをどのように追加するかです。また、複数のポジションがある場合、この倍率は各ポジションごとに異なる必要があります。


パラボリックのように、価格と開始 時間を基点にした相対的な計算を行います。