欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请帮忙看下我所改的问题出在哪里?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5122人关注过本帖树形打印复制链接

主题:请帮忙看下我所改的问题出在哪里?

帅哥哟,离线,有人找我吗?
sanmu528
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
请帮忙看下我所改的问题出在哪里?  发帖心情 Post By:2018/1/18 1:02:17    Post IP:117.21.190.224[只看该作者]

INPUT:M0(1.5,1,10,1),N2(10,1,50,1); variable:trs:=0; variable:ups:=0; variable:dns:=0; variable:flag=1; variable:flagh=1; variable:changeOfTrs=1; variable:ColorBuffer=1; variable:SuperTrend=1; variable:Support1=1; variable:Resist1=1; variable:SUPERTREND下拐=1; variable:SUPERTREND上拐=1; //--- R001:KLINE(H,O,L,C,1); //--- TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)); ATR:=MA(TR1,NN); med:=(H+L)/2; ups:=med+atr*M0; dns:=med-atr*M0; trsr1:=ref(trs,1); trsr2:=ref(trs,2); SuperTrendr1:=ref(SuperTrend,1); SuperTrendr2:=ref(SuperTrend,2); upsr1:=ref(ups,1); dnsr1:=ref(dns,1); //--- IF c>upsr1 THEN BEGIN trs=1; IF trsr1=-1 THEN changeOfTrs=1; end else if c0 THEN BEGIN flag=1; end else BEGIN flag=0; end IF trs>0 and trsr1<0 THEN="THEN" BEGIN flagh="1; end else" BEGIN="BEGIN" flagh="0; end //--" draw="draw" the="the" indicator IF trs="1" THEN BEGIN supertrend="dns; " if="if" changeoftrs="1" THEN BEGIN supertrendr1="SuperTrendr2; " changeoftrs="0; " end end else if="if" trs="-1" THEN BEGIN supertrend="ups; " if="if" changeoftrs="1" THEN BEGIN supertrendr1="SuperTrendr2; " changeoftrs="0; " end end //--- Support1:=SuperTrend; Resist1:=SuperTrend; UpTrend:=Support1Support1 THEN BEGIN SUPERTREND上拐=L; END END else BEGIN IF H>Resist1 AND C

 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 1:06:02    Post IP:117.21.190.224[只看该作者]

INPUT:M0(1.5,1,10,1),N2(10,1,50,1);
variable:trs:=0;
variable:ups:=0;
variable:dns:=0;
variable:flag=1;
variable:flagh=1;
variable:changeOfTrs=1;
variable:ColorBuffer=1;
variable:SuperTrend=1;
variable:Support1=1;
variable:Resist1=1;
variable:SUPERTREND下拐=1;
variable:SUPERTREND上拐=1;
 //---
R001:KLINE(H,O,L,C,1);
 //---
TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR1,NN);
med:=(H+L)/2;
ups:=med+atr*M0;
dns:=med-atr*M0;
trsr1:=ref(trs,1);
trsr2:=ref(trs,2);
SuperTrendr1:=ref(SuperTrend,1);
SuperTrendr2:=ref(SuperTrend,2);
upsr1:=ref(ups,1);
dnsr1:=ref(dns,1);
 //---
IF c>upsr1 THEN  
   BEGIN
     trs=1;  
     IF trsr1=-1 THEN  
        changeOfTrs=1;
end

else if c<dnsr1 THEN     
   BEGIN
     trs=-1; 
     IF dnsr1=1 THEN  
        changeOfTrs=1;
end

else if trsr1=1 THEN  
   BEGIN
   trs=1;
   changeOfTrs=0;
end

else if trsr1=-1 THEN 
   BEGIN
   trs=-1;
   changeOfTrs=0;
end

IF trs<0 and trsr1>0 THEN 
   BEGIN
   flag=1;
end

else  
   BEGIN
   flag=0;
end

IF trs>0 and trsr1<0 THEN 
   BEGIN
   flagh=1;
end

else 
   BEGIN  
   flagh=0;
end

//-- draw the indicator
IF trs=1 THEN
   BEGIN
   SuperTrend=dns;
   if changeOfTrs=1 THEN
      BEGIN
      SuperTrendr1=SuperTrendr2;
      changeOfTrs=0;
    end
end

else if trs=-1 THEN
   BEGIN
   SuperTrend=ups;
   if changeOfTrs=1 THEN
      BEGIN
      SuperTrendr1=SuperTrendr2;
      changeOfTrs=0;
    end
end

 //---
Support1:=SuperTrend;
Resist1:=SuperTrend;
UpTrend:=Support1<C;
 //---

IF UpTrend  THEN
   BEGIN
   IF L<Support1 AND C>Support1 THEN
      BEGIN
        SUPERTREND上拐=L;
   END
END

else  
   BEGIN
   IF H>Resist1 AND C<Resist1 THEN
      BEGIN
        SUPERTREND下拐=H;
   END
END

 //---
请帮忙看下我所改的问题出在哪里?调不出两条线出来

 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 1:15:19    Post IP:117.21.190.226[只看该作者]

以下指标是MT5的部分源码,想改成金字塔版的。谢谢,帮我看下上面编码问题出在哪里

input int    Periode=10;
input double Multiplier=3;
input bool   Show_Filling=false; // Show as DRAW_FILLING
//---
double buyPB[];
double sellPB[];
//---
double SuperTrend[];
double ColorBuffer[];
//---
double Atr[];
double Up[];
double Down[];
double Middle[];
double trend[];
//---
int atrHandle;
int changeOfTrend;
int flag;
int flagh;


      Middle[i]=(high[i]+low[i])/2;
      Up[i]  = Middle[i] +(Multiplier*Atr[i]);
      Down[i]= Middle[i] -(Multiplier*Atr[i]);
      //---
      if(close[i]>Up[i-1])
        {
         trend[i]=1;
         if(trend[i-1]==-1) changeOfTrend=1;
        }
      else if(close[i]<Down[i-1])
        {
         trend[i]=-1;
         if(trend[i-1]==1) changeOfTrend=1;
        }
      else if(trend[i-1]==1)
        {
         trend[i]=1;
         changeOfTrend=0;
        }
      else if(trend[i-1]==-1)
        {
         trend[i]=-1;
         changeOfTrend=0;
        }

      if(trend[i]<0 && trend[i-1]>0)
        {
         flag=1;
        }
      else
        {
         flag=0;
        }

      if(trend[i]>0 && trend[i-1]<0)
        {
         flagh=1;
        }
      else
        {
         flagh=0;
        }

      if(trend[i]>0 && Down[i]<Down[i-1])
         Down[i]=Down[i-1];

      if(trend[i]<0 && Up[i]>Up[i-1])
         Up[i]=Up[i-1];

      if(flag==1)
         Up[i]=Middle[i]+(Multiplier*Atr[i]);

      if(flagh==1)
         Down[i]=Middle[i]-(Multiplier*Atr[i]);

      //-- draw the indicator
      if(trend[i]==1)
        {
         SuperTrend[i]=Down[i];
         if(changeOfTrend==1)
           {
            SuperTrend[i-1]=SuperTrend[i-2];
            changeOfTrend=0;
           }
         ColorBuffer[i]=0.0;
        }
      else if(trend[i]==-1)
        {
         SuperTrend[i]=Up[i];
         if(changeOfTrend==1)
           {
            SuperTrend[i-1]=SuperTrend[i-2];
            changeOfTrend=0;
           }
         ColorBuffer[i]=1.0;
        }
      //---
      double Support1= 0;
      double Resist1 = 0;
      //---
      Support1 = SuperTrend[i];
      Resist1  = SuperTrend[i];
      //---
      bool UpTrend=Support1<close[i];
      //---
      sellPB[i]=0;
      buyPB[i]=0;
      //---      
      if(UpTrend)
        {
         if(low[i]<Support1 && close[i]>Support1)
           {
            buyPB[i]=low[i];
           }
        }
      else
        {
         if(high[i]>Resist1 && close[i]<Resist1)
           {
            sellPB[i]=high[i];
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+---------+

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/18 10:28:15    Post IP:180.169.30.6[只看该作者]

MT5我们这边不是很了解,所以没办法很好的处理。举个例子:你翻译一个语言从德语翻译到中文,肯定要对2种语言都有了解才行。我们技术人员肯定如果对MT5了解比较少的话,那对你的帮助就很有限了。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 11:04:23    Post IP:183.159.165.15[只看该作者]

老师,你说的我明白了,那能否看下我前面的编码有没有什么逻辑上的问题,请帮忙指出改进,,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 11:14:00    Post IP:183.159.165.15[只看该作者]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
以下是我通过文化版自己改进的编码,,在指标里是可以显示红绿已经转向的,,但是转向不是很到位有偏差,所以我现在想参照MT5里的多循环模糊逻辑进去,可出来的编码指标就实现不了红绿和转向
INPUT:M0(1.5,1,10,1),N2(10,1,50,1);
variable:trs:=0,ups:=0,dns:=0;
R001:KLINE(H,O,L,C,1);
TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR1,NN);
med:=(H+L)/2;
ups:=med+atr*M0;
dns:=med-atr*M0;
trs:=if(c>ref(ups,1),1,if(c<ref(dns,1),-1,trs));
flag:=trs<0 and ref(trs,1)>0;
flagh:=trs>0 and ref(trs,1)<0;
dns:=if(trs>0 and dns<ref(dns,1),ref(dns,1),dns);
ups:=if(trs<0 and ups>ref(ups,1),ref(ups,1),ups);
ups:=if(flag,med+atr*M0,ups);
dns:=if(flagh,med-atr*M0,dns);
outtrs:=trs;
outups:=ups;
outdns:=dns;
SUPERTREND:=if(outtrs=1,outdns,outups);

L1:=REF(UPS,BARSLAST(UPS<=REF(UPS,1)));
L2:=LLV(UPS,NN*1.5);
LL:=IF(L2!=REF(L2,1) AND L1<REF(L1,1),L1,IF(L1=L2,L1,L2));
S1:=BARSLAST(CROSS(0.5,UPS=LL))+1;
S2:=CROSS(COUNT((CROSS(C,LL) OR CROSS(C,REF(LL,2))) AND UPS>LL,S1),0.5);
A6:=BARSLAST(S2);
B6:=BARSLAST(CROSS(HHV(DNS,A6+1),C));
SUPERTREND上拐:=CROSS(B6,A6);
SUPERTREND下拐:=CROSS(A6,B6);
SUPERTREND01:IF(B6>A6,HHV(DNS,BARSLAST(SUPERTREND上拐)+1),LLV(UPS,BARSLAST(SUPERTREND下拐)+1)),COLOR996611,LINETHICK2;
SUPERTREND02:IF(B6>A6,SUPERTREND01,DRAWNULL),COLORF00099,LINETHICK2;
SUPERTREND下标记:DRAWICON(SUPERTREND下拐,SUPERTREND01*1.001,5);
SUPERTREND上标记:DRAWICON(SUPERTREND上拐,SUPERTREND02*0.999,4);


 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 11:16:54    Post IP:183.159.165.15[只看该作者]

以下是我参照MT5自己改的编码,但就是SUPERTREND线显示数值有很大问题,,所以我不知道问题出在哪里,请帮忙看下,谢谢
INPUT:M0(1.5,1,10,1),N2(10,1,50,1);
variable:trs:=0;
variable:ups:=0;
variable:dns:=0;
variable:flag=0;
variable:flagh=0;
variable:changeOfTrs=0;
variable:ColorBuffer=0;

variable:Support1=1;
variable:Resist1=1;
variable:SUPERTREND下拐=1;
variable:SUPERTREND上拐=1;
 //---
R001:KLINE(H,O,L,C,1);
 //---
TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR1,NN);
med:=(H+L)/2;
ups:=med+atr*M0;
dns:=med-atr*M0;
trsr1:=ref(trs,1);
trsr2:=ref(trs,2);
upsr1:=ref(ups,1);
dnsr1:=ref(dns,1);
 //---
IF c>upsr1 THEN  
   BEGIN
     trs=1;  
     IF trsr1=-1 THEN  
        changeOfTrs=1;
end

else if c<dnsr1 THEN     
   BEGIN
     trs=-1; 
     IF trsr1=1 THEN  
        changeOfTrs=1;
end

else if trsr1=1 THEN  
   BEGIN
   trs=1;
   changeOfTrs=0;
end

else if trsr1=-1 THEN 
   BEGIN
   trs=-1;
   changeOfTrs=0;
end

IF trs<0 and trsr1>0 THEN 
   BEGIN
   flag=1;
end

else  
   BEGIN
   flag=0;
end

IF trs>0 and trsr1<0 THEN 
   BEGIN
   flagh=1;
end

else 
   BEGIN  
   flagh=0;
end

IF trs>0 and dns<dnsr1 THEN 
   dns=dnsr1;

IF trs<0 and ups>upsr1 THEN 
   ups=upsr1;

IF flag=1 THEN 
   ups=med+atr*M0;

IF flagh=1 THEN  
   dns=med-atr*M0;

SUPERTREND:if(TRS=1,dns,ups);




 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 11:19:28    Post IP:183.159.165.15[只看该作者]

     我对比了下和MT5的以下这段IF  else if循环,我看不出我自己以上编的问题出在哪,望帮忙提建议,谢谢
 Middle[i]=(high[i]+low[i])/2;
      Up[i]  = Middle[i] +(Multiplier*Atr[i]);
      Down[i]= Middle[i] -(Multiplier*Atr[i]);
      //---
      if(close[i]>Up[i-1])
        {
         trend[i]=1;
         if(trend[i-1]==-1) changeOfTrend=1;
        }
      else if(close[i]<Down[i-1])
        {
         trend[i]=-1;
         if(trend[i-1]==1) changeOfTrend=1;
        }
      else if(trend[i-1]==1)
        {
         trend[i]=1;
         changeOfTrend=0;
        }
      else if(trend[i-1]==-1)
        {
         trend[i]=-1;
         changeOfTrend=0;
        }

      if(trend[i]<0 && trend[i-1]>0)
        {
         flag=1;
        }
      else
        {
         flag=0;
        }

      if(trend[i]>0 && trend[i-1]<0)
        {
         flagh=1;
        }
      else
        {
         flagh=0;
        }

      if(trend[i]>0 && Down[i]<Down[i-1])
         Down[i]=Down[i-1];

      if(trend[i]<0 && Up[i]>Up[i-1])
         Up[i]=Up[i-1];

      if(flag==1)
         Up[i]=Middle[i]+(Multiplier*Atr[i]);

      if(flagh==1)
         Down[i]=Middle[i]-(Multiplier*Atr[i]);

      //-- draw the indicator
      if(trend[i]==1)
        {
         SuperTrend[i]=Down[i];
         if(changeOfTrend==1)
           {
            SuperTrend[i-1]=SuperTrend[i-2];
            changeOfTrend=0;
           }
         ColorBuffer[i]=0.0;
        }
      else if(trend[i]==-1)
        {
         SuperTrend[i]=Up[i];
         if(changeOfTrend==1)
           {
            SuperTrend[i-1]=SuperTrend[i-2];
            changeOfTrend=0;
           }
         ColorBuffer[i]=1.0;
        }

 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 11:20:18    Post IP:183.159.165.15[只看该作者]

不知道我的前端变量设置是否不对?

 回到顶部
帅哥哟,离线,有人找我吗?
sanmu528
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:23 积分:0 威望:0 精华:0 注册:2018/1/12 11:56:17
  发帖心情 Post By:2018/1/18 11:22:49    Post IP:183.159.165.15[只看该作者]

请你分别输入文华改进版和我现在的编码分别比照下,应该需要如何作调整

 回到顶部
总数 26 1 2 3 下一页