问吧! - 页 173

 

如何解决缺乏混合类型的数据结构的问题

codersguru:
大家好。

我收到了很多私信,要求我帮助解决一些代码的问题。

在这里,您可以发布与MQL4有关的问题,我会尽力回答。

你好。

我想利用你的邀请,提出以下问题。

既然不能使用混合类型的数据结构,那么基于价格变化的符号列表的存储和排序的最佳解决方案是什么。eurusd->1.29, usdgbp->0.22 ?

在mql4中没有枚举,也没有混合类型的数据结构 可以容纳一个字符串和一个相关的双倍值。我能想到的解决方案是,要么使用一个文件,但这几乎需要持续的磁盘读写活动。或者使用三个数组;一个用于符号列表,一个用于存储和跟踪索引位置的值,一个用于实际值。

看来,人们不得不围绕一个非常基本的(简单的)问题进行编码。我唯一想做的是将所有的欧元对相互比较,以确定相对强度。你会如何解决这个问题,你会推荐什么数据结构?

谢谢你给我这个新手的任何答案或指导!

卜伯浦

 

搜索相对强弱和相关指标

liverpool:
你好。

既然不能使用混合类型的数据结构,那么基于价格变化的符号列表的存储和排序的最佳解决方案是什么?eurusd->1.29, usdgbp->0.22 ?

...

似乎人们不得不围绕一个非常基本(简单)的问题进行编码。我唯一想做的是将所有欧元对的相对强度进行相互比较。你会如何解决这个问题,你会推荐什么数据结构?

谢谢你给我这个新手提供任何答案或指导!卜伯浦

嗨,Bibberpool。

在外汇TSD网站上搜索相对强弱指标和相关指标...

这些类型的指标被设计用来分析不同的货币对和价格以及它们的相对强度。

你可能会找到你想做的事情的好例子。

希望这有帮助。

罗伯特

 

谢谢你的回答

cosmiclifeform:
嗨,Bibberpool。

在这个外汇TSD网站上搜索相对强弱指标和相关指标...

这些类型的指标是用来分析不同的货币对和价格以及它们的相对强度。

你可能会找到你想做的事情的好例子。

希望这有帮助。

罗伯特

你好,谢谢你的回答,我一定会搜索建议的主题。然而,周围有太多的代码了。

同时,我在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 - 欧元兑瑞郎

2 - EURJPY

3 - 欧元兑美元

4 - EURCAD

5 - EURGBP

 

寻找作者Kravchuk的indies

嗨,社区。

我正在寻找作者Kravchuk的作品,他设计的作品可以出售。我愿意购买他的作品,但我们无法就付款方式达成一致(不是金额!)。有没有人有他的作品ft.dejavu、ft.rainbow、barstatline、diver、linerenko?我将感谢您的帮助。谢谢你的帮助。

 
bershk:
嗨,社区,我正在寻找作者Kravchuk的indies,他设计的indies用于销售。我愿意购买,但我们不能推荐付款方式(不是金额!)。有没有人有他的作品ft.dejavu、ft.rainbow、barstatline、diver、linerenko?我将感谢您的帮助。谢谢你的帮助。

你好,bershk。

如果你的要求还没有过时,我们可以在这里提供帮助--我们确实与其中一些指标合作过。

请注意你应该向作者购买许可证,我们不提供任何反编译或非法获得的东西。

如果你有兴趣购买--这里是作者的当前价格。

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

如果你需要帮助购买它们,请写信给我们,info@raitsoft.com, 我们将帮助你购买许可证,不收取任何佣金。

 

Hallo friends ...................

我已经开始学习在mql4中编程,并开始分析指标和EA。

我有一个 "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);

}
 

ERAN123

它正在做以下工作:它找到每天的开盘价(考虑到TimeZoneOfData作为时区转移),并通过该日画出该线。这里有一张图片,我们可以很容易地看到它是如何在当天画出相同的每日开盘价的。

ERAN123:
我已经开始学习用Mql4编程了,开始我分析指标和EA。

我有一个 "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作为时区转移),并通过该日画出该线。这里有一张图片,我们可以很容易地看到它是如何在当天画出相同的每日开盘价的。

对不起,我是在指导这条线路。

double barsper30= 1.0*PERIOD_M30/Period()。

还有这一行。

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

什么是 "20 "和"-1 "以及这两行如何一起工作?

谢谢你的帮助。

 

原先写的是别的东西。

忘了这几行吧:出于某种原因,它们试图限制开始计算数值的起点(应该是从图表上最古老的条形图开始的一些小时)。这个程序员想用它来实现什么,也许只有他自己知道

ERAN123:
对不起,我的意思是这一行。

double barsper30= 1.0*PERIOD_M30/Period()。

还有这一个。

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

什么是 "20 "和"-1",以及这两行如何一起工作?

谢谢你的帮助。
 

感谢我的朋友.....you帮助我。