コーディングのヘルプ - ページ 759

 
拝啓 MLADEN様

コンパイル時の警告「''order send/select,modify,close'' の戻り値」について、以前は (bool dummyResult) を追加して修正していましたが、現在は単に (bool dummy) を使っていますが、すべての状況に対応できるのでしょうか、それとも特定の指標や状況に合わせて新しい (bool dummy) を使うのでしょうか?

よろしくお願いします。
 
mntiwana:
MLADEN様 コンパイル時の警告についてですが、以前は(bool dummyResult)を追加することで「注文送信/選択/変更/終了」の戻り値を修正されていましたが、現在は単に(bool dummy)を使われていますが、全ての状況において大丈夫ですか?それとも特定の指標や状況において新たに(bool dummy)を使用されますか? よろしくお願いします。



通常、これらの警告は良性です。

注文操作がOKかどうかを本当にチェック するために使用されるのは、GetLastError()です(注文操作からのデフォルトのリターンが返す単純なブール値よりもはるかに多くの詳細を与えるので) - そう、それはOKです、そして、エラーの可能性についてより詳細が必要であれば、是非とも、GetLastError()が使われるべきです。
 
wojtekpaul:

(1月31日以降どうするのか?) :(

WojtekPaulです。

どういう意味ですか?

 
chrisstoff:

ヴォイテックポール

どう言う意味ですか?

https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated

でも、この記事も見てね: https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089
 
mladen:
通常、これらの警告は良性である。

注文操作に問題がないかどうかを確認するために使用するのは GetLastError() です (注文操作のデフォルトの戻り値が返す単純なブール値よりもはるかに多くの詳細を提供するからです) - そう、それはOKです。そして、エラーの可能性についてより詳細が必要であれば、ぜひとも GetLastError() を使用すべきです。
親愛なるMLADEN

ヘルプガイダンスをありがとうございます。

よろしくお願いします。
 
mladen:
彼が言いたかったのは、これです : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated

しかし、この投稿もチェックしてください : https://www.forex-tsd.com/forum/announcements-forex-press/1811320-forex-tsd-is-going-to-be-terminated/page4#comment_1849089

ムラデンです。

情報をありがとうございます。これは/私の最も好意的なフォーラムの一つであったので、それは私のために悪いニュースです。とはいえ、ネット上には、フォーラムやチャット機能が用意されている場所が他にもあります。(一例を「Forex-TSDが終了するらしい...」というスレッドに書きました)。

 

皆さん、こんにちは。


このエクストラストラテジーにアラート付きの矢印をつけるコーダーが必要です。このストラテジーは手動で100%の勝利を収めています。


以下は戦略へのリンクです。

http://www.binaryoptionsedge.com/topic/1879-high-power-option-2015/page-2#entry108014

投稿番号 29

Obrigadoです。

 

Mladen様、以下の2つの関数は 可能でしょうか?

iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_HIGH,i);

and

iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);
(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
ここで、ma_emaは以下のように定義されています。
#define _maWorkBufferx1 1
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   if (length<=1) return(price);
   int r = Bars-i-1;
   switch (mode)
   {
      // ...
      case ma_ema   : return(iEma(price,length,r,instanceNo));
      // ...
      default : return(0);
   }
}

double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
   double alpha = 2.0 / (1.0+period);
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
同じMAPeriodとiに対して)異なる値を返すということは可能でしょうか? それは、iEmaが内蔵のEMAとは少し違う動きをするということでしょうか?
iEmaは内蔵のEMAとは少し違う動きをするのでしょうか?
 
wojtekpaul:

Mladen様、以下の2つの関数は可能でしょうか?

iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_HIGH,i);

and

iCustomMa(ma_ema,getPrice(pr_high,Open,Close,High,Low,i),MAPeriod,i,0);
(or iCustomMa(ma_ema,iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,i),MAPeriod,i,0); )
ここで
#define _maWorkBufferx1 1
#define _maWorkBufferx2 2
#define _maWorkBufferx3 3
#define _maWorkBufferx5 5
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
   if (length<=1) return(price);
   int r = Bars-i-1;
   switch (mode)
   {
      // ...
      case ma_ema   : return(iEma(price,length,r,instanceNo));
      // ...
      default : return(0);
   }
}

double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
   double alpha = 2.0 / (1.0+period);
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
が異なる値(同じMAPeriodとiに対して)を返すということはあり得ますか? それは
iEmaは内蔵のEMAとは少し違う動きをするのでしょうか?
EMAは以前の値に依存します。もし、全シリーズの値を計算したのであれば、非常に似たような値を返すはずです。そうでない場合(1つの値だけを計算しようとした場合)、iMA()はカーテンの裏でシリーズ全体を計算し、iCustomMa()はあなたが要求した値だけを計算するので、同じ値にはならないでしょう。

iCustomMa()はあなたが要求した値だけを計算します。全シリーズでiCustomMa()をループさせると、結果は同じになるはずです。


追記:iEma()は廃止されました。新しいバージョンは次のようになります(値を変更するわけではありませんが、「厳密なモード証明」です)。
double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= Bars) ArrayResize(workEma,Bars);
   //
  
   workEma[r][instanceNo] = price;
   if (r>0 && period>1)
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}
 

迅速なご回答をありがとうございました。

移動平均 の現在のコードを見つけることができます。

enum enMaTypes
{
   ma_sma,     // simple moving average - SMA
   ma_ema,     // exponential moving average - EMA
   ma_dsema,   // double smoothed exponential moving average - DSEMA
   ma_dema,    // double exponential moving average - DEMA
   ma_tema,    // tripple exponential moving average - TEMA
   ma_smma,    // smoothed moving average - SMMA
   ma_lwma,    // linear weighted moving average - LWMA
   ma_pwma,    // parabolic weighted moving average - PWMA
   ma_alxma,   // Alexander moving average - ALXMA
   ma_vwma,    // volume weighted moving average - VWMA
   ma_hull,    // Hull moving average
   ma_tma,     // triangular moving average
   ma_sine,    // sine weighted moving average
   ma_linr,    // linear regression value
   ma_ie2,     // IE/2
   ma_nlma,    // non lag moving average
   ma_zlma,    // zero lag moving average
   ma_lead,    // leader exponential moving average
   ma_ssm,     // super smoother
   ma_smoo     // smoother
};

私の知る限り、これはオープンコードとして利用可能な最後の移動平均のリストです。

(他のMAはすでにex4形式になっています)。

理由: