アスク! - ページ 173

 

混合型データ構造の欠如を解決する方法

codersguru:
こんにちは、皆さん。

多くのプライベートメッセージで、いくつかのコードについて助けを求められています。

ここでは、MQL4に関連する質問を投稿することができます。

こんにちは。

私はあなたの招待状を使って、次の問題を提起したいと思います。

シンボルのリストを価格変化に基づいて保存し、ソートするための最良の解決策は何でしょうか?eurusd->1.29, usdgbp->0.22 のような混合型のデータ構造を使用することはできません。

mql4にはenumはありませんし、文字列とそれに関連するdouble値を保持できる混合型のデータ構造も ありません。私が思いつく解決策は、ファイルを使用することですが、それはほとんど常にディスクの読み書きを必要とします。1つはシンボルリスト用、もう1つはインデックスプレース値の保存と追跡用、そしてもう1つは実際の値用です。

非常に基本的な(単純な)問題を回避するためにコードを書かなければならないようです。私が望む唯一のことは、すべてのユーロペアを相対的な強さについて互いに比較することです。どのようにこれを解決するか、どのようなデータ構造を推奨するか?

この初心者への回答や指示をありがとうございました。

ビバプール

 

相対力指標と相関指標の検索

liverpool:
こんにちは。

シンボルのリストを価格変化に基づいて保存し、ソートするための最良のソリューションは何でしょうか?eurusd->1.29, usdgbp->0.22 のような混合型のデータ構造を使用することができないので、価格の変化に基づいてシンボルのリストを保存し、ソートする最善の方法は何でしょうか?

...

非常に基本的な(単純な)問題を回避するためにコードを書かなければならないようです。私が望む唯一のことは、すべてのユーロペアを相対的な強さについて互いに比較することです。どのようにこれを解決しますか、どのようなデータ構造をお勧めしますか?

この初心者のための答えや指示をありがとうございますビバプール

こんにちは、Bibberpool。

このForex TSDのサイトでRelative StrengthとCorrelationを検索してみてください。

これらのタイプの指標は、異なるペアや価格、それらの相対的な強さを分析するために設計されています。

あなたがしたいことのための良い例を見つけることができます。

お役に立てれば幸いです。

ロバート

 

ご回答ありがとうございました

cosmiclifeform:
こんにちは、Bibberpool。

このForex TSDサイトで、Relative StrengthインジケータとCorrelationインジケータを検索してください...

これらのタイプの指標は、異なるペアや価格とそれらの相対的な強さを分析するために設計されています。

あなたがしたいことのための良い例を見つけることができます。

これが役立つことを願っています。

ロバート

こんにちは、あなたの答えをありがとうございました、私は確かに示唆スレッドを検索します。しかし、あまりにも多くのコードが周りにあります。

一方、私はCで短いプロトタイプを作りました。データは小さなセットから構成されているので、基本的な挿入ソートを 取り、それに応じて文字列配列を更新するためにそのルーチンを更新しただけです。

私は今週末に私の最初のmql4プログラムにそれを移植する(コピー&ペースト)予定です。以下はそのコードです。たぶん他の人にとっても役に立つか、あるいはもっと良いものを作るために誰かがそれにコメントしたいのでしょう。

#include

int main(void) {

int max = 5;

int array[5] = { 3, 5, 2, 1, 4 };

char *symbl[5] = { "EURUSD", "EURGBP", "EURJPY", "EURCHF", "EURCAD" };

int idx = 0;

int swp = 0;

int tmp = 0;

char *tmpsymb = NULL;

printf("--- before\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

for(idx = 1 ; idx <= max - 1; idx++) {

swp = idx;

while(swp > 0 && array[swp] < array[swp - 1]) {

tmp = array[swp];

tmpsymb = symbl[swp];

array[swp] = array[swp - 1];

symbl[swp] = symbl[swp - 1];

array[swp - 1] = tmp;

symbl[swp - 1] = tmpsymb;

swp--;

}

}

printf("--- after\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

return 0;

}

このプログラムは次のように表示します。

---前

3 - EURUSD

5 - EURGBP

2 - EURJPY

1 - EURCHF

4 - EURCAD

--- 以降

1 - EURCHF

2 - EURJPY

3 - EURUSD

4 - EURCAD

5 - EURGBP

 

著者Kravchukのインディーズを探しています。

こんにちは、コミュニティです。

私は、インディーをデザインして販売している作家のKravchukからインディーを探しています。私は購入することを望んでいましたが、私たちは支払いのフォーム(金額ではありません!)で合意することはできません。どなたか、彼のインディー ft.dejavu, ft .rainbow,barstatline,diver,linerenko をお持ちの方はいらっしゃいませんか?ご協力をお願いします。ありがとうございました。

 
bershk:
こんにちは、コミュニティ、私は作者のKravchukからインディーズを探しています。私は購入するつもりでしたが、支払い方法(金額ではありません!)を決めることができません。どなたか、彼のインディー ft.dejavu, ft .rainbow,barstatline,diver,linerenko をお持ちではないでしょうか?ご協力をお願いします。ありがとうございました。

こんにちは、bershk。

もしあなたのリクエストがまだ時代遅れでないなら、私たちはここで助けることができるかもしれません - 私たちはこれらの指標のいくつかで仕事をしました。

このようなインジケータは、私たちが開発したものです。ただし、ライセンスは作者から購入する必要があり、私たちは逆コンパイルや違法に入手したものは提供しません。

もし、あなたが購入に興味があるなら、作者からの現在の価格は以下の通りです。

Dejavu - $20、Rainbow - $15、Barstatline - $10 、Diver - $20、LineRenko - $15。

もし、購入の手助けが必要でしたら、info@raitsoft.com までご連絡ください。手数料なしでライセンスの購入をお手伝いします。

 

こんにちは、友人たちよ.......................。

私はmql4でプログラミングを学び始めており、開始のために私はidicatorsとeaをanalyzingます。

私は "daily_close _line "インディケータを持っており、私はコードを見て、私は彼らが何をしているか分からないコードのこれらの塔の行を実行 、それらがどのように動作します。

そのため、このような弊害が発生することがあります。

事前に略奪に感謝します。

eran

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
 

ERAN123

これは次のように動作します:毎日のオープン価格(タイムゾーンシフトとしてTimeZoneOfDataを考慮)を見つけ、その日を通してその線を描きます。この画像は、その日の始値から終値まで同じ線を引いているのがわかると思います。

ERAN123:
私はmql4でプログラミングを学び始めている、と開始のために私はidicatorsとeaをanalyzingます。

私は "daily_close _line "インディケータを持っており、私はコードを見て、私は彼らが 、どのように動作しているのか見当もつかないコードのこれらの塔の行を実行します。

そのため、このような弊害が発生することがあります。

事前に略奪に感謝します。

エラン

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
ファイル:
daly_open.gif  30 kb
 
mladen:
ERAN123

これは次のように動作します:毎日のオープン価格(タイムゾーンシフトとしてTimeZoneOfDataを考慮)を見つけ、その日を通る線を描画します。以下は、その日の始値から終値まで同じ線を引いている様子がよくわかる画像です。

SORY I ment this line :

double barsper30= 1.0*PERIOD_M30/Period();

そしてこちらも

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

20 "と"-1 "は何のために、どのように2行が一緒に動作するのですか?

戦利品をありがとうございます。

 

元々は別のことを書いていました。

これらの行については忘れてください。これは、何らかの理由で、値が計算され始める開始点を制限しようとしています(そしてそれは、チャートの最も古いバーから何時間かであるべきです)。このコーダーが何をしたかったのかは、たぶん彼だけが知っていることでしょう。

ERAN123:
sory i ment thise line :

double barsper30= 1.0*PERIOD_M30/Period();

そして、これもまた

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

20 "と"-1 "は何ですか?2つの行はどのように一緒に動作するのですか?

ありがとうございました。
 

ありがとう、私の友人......あなたは私を助けました。