どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 234

 
Integer:


さて、ここで一気に...。司会者さん、監視すべきところは監視した方が秩序が保たれますよ。フォーラムで狂気が起こっている、モデレーターはどこにいる?詰まる、壊す、送る、モデレーターがいる。そろそろデタラメを言うのはやめませんか?

この掲示板の巨人たちが無意味に争っているのを見るのは苦痛です。非常に強力なリソースのプログラマーのためのフォーラムです。礼儀正しくすること。提案します。

1.密かにでもパーソナリティを切り替えようとした場合、24時間BANする。

2.人を侮辱した場合・・・1週間禁止。

3.悪態をついたり、侮辱を繰り返した場合、1ヶ月のアクセス禁止。

4.過去の警告を全て無視し、厳しい態度で違反を繰り返した場合、永久追放。

 
yosuf:

フォーラムの巨人たちが些細なことで争っているのを見るのはつらいものです。最強のリソースを持つプログラマーたちのフォーラムです。礼儀正しくすること。提案します。

1.密かにでもパーソナリティを切り替えようとした場合、24時間BANする。

2.人を侮辱した場合・・・1週間禁止。

3. 悪態を伴う侮辱を繰り返した場合、1ヶ月のアクセス禁止。

4.過去の警告を全て無視し、過酷な形で違反を繰り返した場合 - 永久追放。



残念ながら、ここのモデレーターは「偽装された何か」を見抜くだけの能力がないことを除けば、全く同感です。ここにいる微妙な外交官の皆さんも同じです。
 

オフトレで申し訳ないのですが、どなたか教えてください。

ハンドブックより

"参照 "でパラメータを渡すことが可能です。この場合、そのようなパラメータの変更は、参照渡しされる呼び出し側関数の対応する変数に影響します。配列の 要素を参照渡しすることはできない。パラメータを参照渡しできるのは、1つのモジュールの範囲内に限られ、 ライブラリ関数にはそのような機会は ありません。パラメータが参照渡しであることを指定するためには、データ型の後に&修飾子を付ける必要があります。

配列は参照渡しも可能であり、すべての変更は初期配列に反映される。単純なパラメータと異なり、配列はライブラリ関数内でも参照渡しが 可能です」。

ライブラリ関数から参照で値を渡すには、単位次元の配列の形でプロキシを使わなければならない。

他に回避策はないのでしょうか?

そして、なぜそのようにするのか。

 
ALXIMIKS:

オフトレで申し訳ないのですが、どなたか教えてください。

ハンドブックより

"参照 "でパラメータを渡すことが可能です。この場合、そのようなパラメータの変更は、参照渡しされる呼び出し側関数の対応する変数に影響を与える。配列の要素を参照渡しすることはできない。パラメータを参照渡しできるのは、1つのモジュールの範囲内に限られ、 ライブラリ関数にはそのような機会は ありません。パラメータが参照渡しであることを指定するには、データ型の後に修飾子 & を付けなければならない。

配列は参照渡しも可能であり、すべての変更は初期配列に反映される。単純なパラメータと異なり、配列はライブラリ関数内でも参照渡しが 可能です」。

1.ライブラリ関数から参照で値を渡すには、単位次元の配列の形でプロキシを使わなければならない。

他に回避策はないのでしょうか?

2.なぜ、そのような方法なのか?

1.そうですね。MQL4ではそれ以外の方法はありません。

2.具体的には?参照渡しというなら、大量のデータ(基本型の長さより大きい)を渡すためのものです。スタックに積まないこと。通常、構造体、クラス、配列は、ポインタまたは参照で渡されます。クラスや構造体はreturnによって関数から返すことができますが。また、クラス、構造体、配列への参照やポインタを返すこともできる。

 

こんな悩みがあります。

ストップロスを変更すると、時々、最後に開いた注文にストップをかけるのに失敗します。ごく稀にですが、時折射抜くことがあります。

価格に間違いはない。ただ、カス野郎は時々、最後の位置に注文を入れず、その後に再計算しています。

どこをどう間違えたのか、教えてください。

//+-------------------------------------------------------------------------------------+
//|                        Управление StopLoss, TakeProfit                              |
//+-------------------------------------------------------------------------------------+
bool ProfitManagement()
{
double StopLossBuy = BuyAP+Profit*Point;                             //Вычисляем StopLoss
double TakeProfitBuy = BuyAP + Profit*Point;                  //Вычисляем цену TakeProfit
double StopLossSell = SellAP-Profit*Point;
double TakeProfitSell = SellAP - Profit*Point;
RefreshRates();
for(int good = 0; good < OrdersTotal(); good ++)     // Выбираем со всего массива ордеров
 {
 if(OrderSelect (good, SELECT_BY_POS, MODE_TRADES))             
 if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
 if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)  //Выбираем ордера эксперта
   { 
//-------------------------Order Buy-----------------------------------------------------  
if (BuyCount >1)                                           //Если открыты длинные позиции
 {
 if (BuyAP < Bid)                                                //Если  мы идем по рынку  
 if (MathAbs(OrderStopLoss() - StopLossBuy) >= Tick)           // Профит не равен нужному
 if (Bid - StopLossBuy > DedZone)                    // Уровень достаточно удален от цены
 if (WaitForTradeContext())                                // Свободен ли торговый поток?
 if (OrderType() == OP_BUY)                                        // Выбираем ордера Buy
 if (!OrderModify(OrderTicket(), 0, NP(StopLossBuy), 0, 0, Lime))    // Изменяем StopLoss
  {
 Alert (Symbol()," Хрень со стопами! ",   GetLastError());
 return(false);
  }

// ну и далее по логике
 
yosuf:

フォーラムの巨人たちが些細なことで争っているのを見るのはつらいものです。強力なリソースのプログラマーによるフォーラムです。礼儀正しくすること。提案します。

1.密かにでもパーソナリティを切り替えようとした場合、24時間BANする。

2.人を侮辱した場合・・・1週間禁止。

3.悪態をつきながら侮辱を繰り返す - 1ヶ月のアクセス禁止。

4.過去の警告を全て無視し、過酷な形で違反を繰り返した場合 - 永久追放。


銃殺刑はいつ?ないんですか?
 
Limita:

こんな悩みがあります。

ストップロスを変更すると、時々、最後に開いた注文にストップをかけるのに失敗します。ごく稀にですが、時折射抜くことがあります。

価格に間違いはない。ただ、カス野郎は時々、最後の位置に注文を入れず、その後に再計算しています。

どこが間違っていたのか、アドバイスしてください。

この順序を言葉で説明する。

   //-------------------------Order Buy-----------------------------------------------------  
         if (BuyCount >1) {
            if (BuyAP < Bid)                                      //Если  мы идем по рынку, то выполнится следующая  
            if (MathAbs(OrderStopLoss() - StopLossBuy) >= Tick)   // Профит не равен нужному
            if (Bid - StopLossBuy > DedZone)                      // Уровень достаточно удален от цены
            if (WaitForTradeContext())                            // Свободен ли торговый поток?
            if (OrderType() == OP_BUY)                            // Выбираем ордера Buy
            if (!OrderModify(OrderTicket(), 0, NP(StopLossBuy), 0, 0, Lime)) {
               Alert (Symbol()," Хрень со стопами! ",   GetLastError());
               return(false);
            }

簡単に言うと、プログラミングから遠く離れた仲間にどう伝えるかです

 

例えば、1ポジションあたり50pipsを獲得したい。StopLoss は当社の平均価格+50pipsに相当 します。

ロングポジションを開いていれば、その分、一定の利益を得ることができます。StopLossを一定水準に設定しています。市場をさらに成長させよう。まだ十分な収入がない場合は、十分な収入が得られるようになるまで待ちます。

買い方向で別のポジションを建てる。平均価格が変われば、StopLossを変更する。

そしてもちろん、我々はストップを設定し、ブローカーのルール(取引の流れ、ストップレベル)に従って、それ以外のブローカーは私たちを理解することはできません:)))

なんとか説明できたでしょうか :))

 
Limita:

例えば、1ポジションあたり50pipsを獲得したい。StopLoss は当社の平均価格+50pipsに相当 します。

ロングポジションを開いていれば、その分、一定の利益を得ることができます。StopLossを一定水準に設定しています。市場をさらに成長させよう。まだ十分な収入がない場合は、十分な収入が得られるようになるまで待ちます。

買い方向で別のポジションを建てる。平均価格が変われば、StopLossを変更する。

そしてもちろん、我々はストップを設定し、ブローカーのルール(取引の流れ、ストップレベル)に従って、それ以外のブローカーは私たちを理解することはできません:)))

なんとか説明できたでしょうか :))

ああ ...私が言いたかったのは、そのセリフのロジックです ...

中括弧がないので、曖昧な論理になっていますね。つまり、直前の条件を満たせば、すべての行が満たされるわけではない

 
Limita:

こんな悩みがあります。

ストップロスを変更すると、時々、最後に開いた注文にストップをかけるのに失敗します。ごく稀にですが、時折射抜くことがあります。

価格に間違いはない。ただ、カス野郎は時々、最後の位置に注文を入れず、その後に再計算しています。

どこをどう間違えたのか、教えてください。


for (int good = 0; good < OrdersTotal(); good ++){                                // Выбираем со всего массива ордеров
    }    

この方法の方が良い(あなたのやり方では、オーダーの修正・削除の際に問題があったと書いている人がいました).

for (int good = OrdersTotal()-1; good >= 0; good --){     // Выбираем со всего массива ордеров
    }  

そして、なぜオイルやバターなのか?(一件落着)

 if (OrderSymbol() != Symbol() || OrderMagicNumber() !=  MagicNumber) continue;
 if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber) {          //Выбираем ордера эксперта
    }