マルチカレンシーアドバイザーに関する質問

 

こんばんは!(^o^)

2組を1つのEAにまとめようと考えています。してきました。

しかし、ふと疑問がわいた。こんな感じでやりました。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

オンラインでもストラテジーテスターでも、すべてがうまくいきます。ちょっとやり方が違うかもしれませんね。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
2番目のオプションは、テスターでも動作するようです。

でも、どうしたらいいんだろう?

 
rid:

こんばんは!(^o^)


2組を1つのEAにまとめようと考えています。してきました。


しかし、ふと疑問がわいた。こんな感じでやりました。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

オンラインでもストラテジーテスターでも、すべてがうまくいきます。ちょっとやり方が違うかもしれませんね。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
2番目のオプションは、テスターでも動作するようです。

でも、どうしたらいいんだろう?




私は通常、すべてのインジケータ値を最初に計算します、つまり、バリアント1です。
 

ありがとうございました。答え合わせのため。もう1つ質問です。トレーリングストップが効かない。テスターでは個別に動作します

でも、オンラインでは1組で通用します。しかし、別のものでは、Expert Advisorをアタッチした直後にエラーが発生します。

しかし、2組目はトロールを使わず、ディールを行っています。

エラー 130 SLの修正

int start()
  {
РАСЧЁТ  ИНДИКАТОРОВ 
{
ПОКУПКА/ПРОДАЖА
  }
 
for (int j=0; j<OrdersTotal(); j++)                                    {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)          {
ИДЕТ КОД 1 ТРЕЙЛИНГА.
   }
 
for (int r=0; r<OrdersTotal(); r++)                                    {
    if (OrderSelect(r, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)          {
ИДЕТ КОД 2 ТРЕЙЛИНГА
}
 
return(0);  
  }
末尾のコードは同じですが、外部変数と内部変数の文字が異なります。

何が悪いのか理解できない。もしかしたら、誰かが教えてくれるかも?

 
こんな風にやってみよう
int start()
{
//РАСЧЁТ  ИНДИКАТОРОВ 
 
//ПОКУПКА/ПРОДАЖА
  
 
for (int j=0; j<OrdersTotal(); j++)
  {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)         
              {
                  ИДЕТ КОД 1 ТРЕЙЛИНГА.
              }
          if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)   
              {
                  ИДЕТ КОД 2 ТРЕЙЛИНГА
              }
        }
   }
 
 
  return(0);  
}
 
を構造化すれば、人も自分も理解しやすくなります。
 

試してみます、ありがとうございました。

 

効いているようです!

まだエラーはありません。トロールを確認するために利益を待っている。

もっと質問してください。差し支えなければ

多通貨実験の最も単純な例には遠く及ばない。 そして、それらが利用可能であっても、弱々しい心には向かない。複雑すぎて、すべてを理解することはできません。

私のコードの中にもあります。

 double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
//-------Проверяем условие на покупку-------------
if  (

しかし、本サイトでは稀に同様のブロックが存在する場合、線があることがあります。

RefreshRates();
 double BID = MarketInfo("GBPUSD", MODE_BID);
 double ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);

また、このような行を挿入しています。まとめたものです。しかし、性能の変化は感じられない。

ここではどの程度必要なのでしょうか?もしかしたら、私のEAに残すべきかもしれません。すべてのダニに効く。そして、それは値の配列を使用します - 。

//------заполняем массив значениями RSI GBPUSD -----------
 double RSI_array[30];
int    i=0;
while (i<31)
 {
RSI_array[i]=iRSI("GBPUSD",0,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i);
i++;

 
多通貨 Expert Advisor の原理は、おおよそ次のとおりです。
1. 特定の通貨と時間間隔を指定する指標の計算で、例えば:iRSI("GBPUSD",60,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); //しかし、ここでエラーが発生しました。
2. MarketInfoを使って、価格やポイントなどを取得する。
3. Low[0]の代わりにiLow(...)を使用する例
で、すべての通貨ペアに適用されます。
頑張ってください。
 

エラーが出ました0」の代わりに、通貨用のインジケータ変数、Expert Advisorが動作する時間枠を入れました。

Expert Advisorはスムーズに動作しているようです。トロールも効くしね。

そして、最後にもう一つ質問させてください。もう一枚挿入しました。ただし、内蔵のインジケーターではなく、カスタムのインジケーターです。テスターでは、このペアが動作します。でも、オンラインでは、そうはいきませんほぼ毎秒、このインジケータが配置され、削除されるという、奇妙なものが表示されます。- 何かアドバイスがあればお願いします。

//***************************************************************

kLerk !今週ここにいる専門家の中で、私の質問に答えてくれたのはあなただけです。そして、ほぼ満足のいく答えを得ることができました。(RefreshRates()に関する質問を除く)。

ここにメールアドレスを書いてください。

お礼に、私の親友が考案した簡単なトレードの「聖杯」であるEAを送ります!(同意)私はこれで手動確認をしながら作業しています。私は、手動で確認しながら作業しています。 私は、内蔵されている2つのインジケーターだけを使用しています。

皮肉なしで、-それは本当にほとんど「聖杯」であること(それを使って作業のいくつかのスキルで)、-あなたはそれを受け取った後、数分後に表示されますよ。しかし--みんなに見てもらいましょう。

記号 ---------

期間 30 分 (M30) 2007.01.02 11:00 - 2007.08.15 00:00

モデル 全ティック(各ティックのフラクタル補間で利用可能な最小の全期間をベースとする)

モデリング品質 67.35

初回入金額 10000.00

当期純利益 4009.24

利益合計 6335.06 損失合計 -2325.82

利益率 2.72 期待ペイオフ 21.44

最大ドローダウン量 245.63 (2.18%) 相対ドローダウン量 2.18% (245. 63)

総取引高 187

ショートポジション(勝率) 71 (80.28%)

ロングポジション(勝率) 116 (68.10%)

利益を得た取引(全体の割合) 136 (72.73%)

損失取引(全体に占める割合) 51 (27.27%)

最大の利益を上げた取引は145.02、負けた取引は-47。77

平均的な利益トレード46.58、負けトレード-45.60

最大継続勝利数(利益) 9 (586. 96)

連続的な損失(ロス) 4 (-189.99)

そして、前年2006年の11月・12月のアウトオブサンプルのテストチャートです。

 
rid:

感謝の気持ちを込めて、シンプルなトレーディングの"神器"であるアドバイザーをお送りします!

おめでとうございます! クラークさん、タダで聖杯を手に 入れましたね。
 
<< 訳のわからないものが表示される:ほぼ1秒ごとにこのインジケータが付け外しされている......。- >>

おそらく、カスタムインジケータが 呼び出される実際のパラメータは、リストのexternキーでリストされた正式なパラメータ(番号、順序、タイプ、...)に対応しません。かなりよくある間違いです。