交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 2458|回复: 2
打印 上一主题 下一主题

[指标] 有一个指标,很难理解里面的很多函数,求助编程高手

[复制链接]

352

主题

7816

积分

3

精华

高级操盘手

金钱
7816 美元
权重
224
跳转到指定楼层
楼主
发表于 2017-6-28 04:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有一个指标,很难理解里面的很多函数,求助编程高手,我无法理解就无法改编,有编程高手吗
  1. int initSymbols()
  2. {
  3.    int i;
  4.    string symbolExtraChars = StringSubstr(Symbol(),6,4);      // 使用symbolExtraChars字符串保存货币对多余符号
  5.    symbolsToWeigh = StringTrimLeft(symbolsToWeigh);      
  6.    symbolsToWeigh = StringTrimRight(symbolsToWeigh);
  7.    // 给symbolsToWeigh字符串赋值,去掉空白符(包括空格符、制表符、换行符、回车符)

  8.    if (StringSubstr(symbolsToWeigh, StringLen(symbolsToWeigh)-1) != ",")
  9.    {
  10.       symbolsToWeigh = StringConcatenate(symbolsToWeigh, ",");      // 连接symbolsToWeigh字符串与,
  11.    }   
  12.   
  13.    if (autoSymbols)
  14.    {
  15.       createSymbolNamesArray();      // 运行createSymbolNamesArray()函数
  16.    }
  17.    else
  18.    {
  19.       i = StringFind(symbolsToWeigh, ",");
  20.       while (i != -1)
  21.       {
  22.          int size = ArraySize(symbolNames);      // 把常量size赋值为symbolNames数组内容数量
  23.         
  24.          ArrayResize(symbolNames, size + 1);
  25.          symbolNames[size] = StringConcatenate(StringSubstr(symbolsToWeigh, 0, i),symbolExtraChars);
  26.                  symbolsToWeigh = StringSubstr(symbolsToWeigh, i + 1);
  27.          i = StringFind(symbolsToWeigh, ",");
  28.       }
  29.    }

  30.    if (showOnlySymbolOnChart)
  31.    {
  32.       symbolCount = ArraySize(symbolNames);
  33.       string tempNames[];
  34.       for (i = 0; i < symbolCount; i++)
  35.       {
  36.          for (int j = 0; j < huobiduishuliang; j++)
  37.          {
  38.             if (StringFind( Symbol(), currencyNames[j] ) == -1)
  39.             {
  40.                break;
  41.             }
  42.             if (StringFind(symbolNames[i], currencyNames[j] ) != -1)
  43.             {  
  44.                size = ArraySize(tempNames);
  45.                ArrayResize(tempNames, size + 1);
  46.                tempNames[size] = symbolNames[i];
  47.                break;
  48.             }
  49.          }
  50.       }
  51.       for (i = 0; i < ArraySize(tempNames); i++)
  52.       {
  53.          ArrayResize(symbolNames, i+1);
  54.          symbolNames[i] = tempNames[i];
  55.       }
  56.    }
  57.    
  58.    symbolCount = ArraySize(symbolNames);

  59.    for (i = 0; i < symbolCount; i++)
  60.    {
  61.       int currencyIndex = GetCurrencyIndex(StringSubstr(symbolNames[i],0,3));
  62.       currencyOccurrences[currencyIndex]++;
  63.       currencyIndex = GetCurrencyIndex(StringSubstr(symbolNames[i],3,3));
  64.       currencyOccurrences[currencyIndex]++;
  65.    }   

  66.    userTimeFrame = PERIOD_D1;
  67.    if (autoTimeFrame)
  68.    {
  69.                 userTimeFrame = Period();
  70.         }   
  71.         else
  72.         {
  73.             if (timeFrame == "M1" ) userTimeFrame = PERIOD_M1;
  74.                 else   if (timeFrame == "M5" ) userTimeFrame = PERIOD_M5;
  75.                 else   if (timeFrame == "M15") userTimeFrame = PERIOD_M15;
  76.                 else   if (timeFrame == "M30") userTimeFrame = PERIOD_M30;
  77.                 else   if (timeFrame == "H1" ) userTimeFrame = PERIOD_H1;
  78.                 else   if (timeFrame == "H4" ) userTimeFrame = PERIOD_H4;
  79.                 else   if (timeFrame == "D1" ) userTimeFrame = PERIOD_D1;
  80.                 else   if (timeFrame == "W1" ) userTimeFrame = PERIOD_W1;
  81.                 else   if (timeFrame == "MN" ) userTimeFrame = PERIOD_MN1;
  82.    }
  83.    return(0);
  84. }

  85. //+------------------------------------------------------------------+
  86. //| GetCurrencyIndex(string currency)                                |
  87. //+------------------------------------------------------------------+
  88. int GetCurrencyIndex(string currency)
  89. {
  90.    for (int i = 0; i < huobiduishuliang; i++)
  91.    {
  92.       if (currencyNames[i] == currency)
  93.       {
  94.          return(i);
  95.       }   
  96.    }   
  97.    return (-1);
  98. }

  99. //+------------------------------------------------------------------+
  100. //| createSymbolNamesArray()                                         |
  101. //+------------------------------------------------------------------+
  102. void createSymbolNamesArray()
  103. {
  104.    int hFileName   = FileOpenHistory ("symbols.raw", FILE_BIN|FILE_READ);
  105.    int recordCount = FileSize (hFileName) / 1936;
  106.    int counter = 0;

  107.    for (int i = 0; i < recordCount; i++)
  108.    {
  109.       string tempSymbol = StringTrimLeft (StringTrimRight (FileReadString (hFileName, 12)));
  110.       if (MarketInfo (tempSymbol, MODE_BID) > 0 && MarketInfo (tempSymbol, MODE_TRADEALLOWED))
  111.       {
  112.          ArrayResize(symbolNames, counter + 1);
  113.          symbolNames[counter] = tempSymbol;
  114.          counter++;
  115.       }
  116.       FileSeek(hFileName, 1924, SEEK_CUR);
  117.    }
  118.    FileClose(hFileName);
  119. }

  120. //自定义指示符初始化功能
  121. int deinit()
  122. {
  123.    int windex = WindowFind (shortName);
  124.    if (windex > 0)
  125.    {
  126.       ObjectsDeleteAll (windex);
  127.    }
  128.    return(0);
  129.   }

  130. //自定义指标迭代功能
  131. int start()
  132. {
  133.    int i,j,limit;
  134.    int counted_bars=IndicatorCounted();

  135.    if(counted_bars<0) return(-1);
  136.    if(counted_bars>0) counted_bars--;
  137.    
  138.    limit=MathMin(Bars-1,Bars-counted_bars+HalfLength);
  139.    if(limit>BARS)limit=BARS;

  140.         for ( i = limit; i >= 0; i-- )
  141.    {
  142.    
  143.       for (j = 0; j < huobiduishuliang; j++) { SetIndexStyle(j,DRAW_LINE,STYLE_SOLID,Line_Thickness,currencyColors[j]); }   

  144.       double diff = 0.0;
  145.       
  146.       ArrayInitialize(currencyValues, 0.0);
  147.       CalculateCurrencySlopeStrength(userTimeFrame,i);

  148.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"USD") != -1)) || (!showOnlySymbolOnChart && USD))        
  149.       {
  150.          arrUSD[i]           = currencyValues[0];
  151.          if (diff ==0) diff += currencyValues[0];
  152.          else          diff -= currencyValues[0];
  153.       }
  154.       
  155.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"EUR") != -1)) || (!showOnlySymbolOnChart && EUR))        
  156.       {
  157.          arrEUR[i]            = currencyValues[1];
  158.          if (diff == 0) diff += currencyValues[1];
  159.          else           diff -= currencyValues[1];
  160.       }

  161.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"GBP") != -1)) || (!showOnlySymbolOnChart && GBP))        
  162.       {
  163.          arrGBP[i]            = currencyValues[2];
  164.          if (diff == 0) diff += currencyValues[2];
  165.          else           diff -= currencyValues[2];
  166.       }

  167.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"CHF")!= -1)) || (!showOnlySymbolOnChart && CHF))        
  168.       {
  169.          arrCHF[i]            = currencyValues[3];
  170.          if (diff == 0) diff += currencyValues[3];
  171.          else           diff -= currencyValues[3];
  172.       }
  173.       
  174.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"JPY")!= -1)) || (!showOnlySymbolOnChart && JPY))        
  175.       {
  176.          arrJPY[i]            = currencyValues[4];
  177.          if (diff == 0) diff += currencyValues[4];
  178.          else           diff -= currencyValues[4];
  179.       }

  180.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"AUD" )!= -1)) || ( !showOnlySymbolOnChart && AUD ) )        
  181.       {
  182.          arrAUD[i]            = currencyValues[5];
  183.          if (diff == 0) diff += currencyValues[5];
  184.          else           diff -= currencyValues[5];
  185.       }
  186.       
  187.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"CAD")!= -1)) || (!showOnlySymbolOnChart && CAD))        
  188.       {
  189.          arrCAD[i]            = currencyValues[6];
  190.          if (diff == 0) diff += currencyValues[6];
  191.          else           diff -= currencyValues[6];
  192.       }

  193.       if ((showOnlySymbolOnChart && (StringFind(Symbol(),"NZD")!= -1)) || (!showOnlySymbolOnChart && NZD))        
  194.       {
  195.          arrNZD[i]            = currencyValues[7];
  196.          if (diff == 0) diff += currencyValues[7];
  197.          else           diff -= currencyValues[7];
  198.       }
  199.       
  200.       if ( i == 1 )
  201.       {
  202.          ArrayCopy(currencyValuesPrior,currencyValues);
  203.       }
  204.       if ( i == 0 )
  205.       {
  206.       
  207.          ShowCurrencyTable();
  208.       }

  209.       if (showOnlySymbolOnChart && MathAbs(diff) > differenceThreshold)
  210.       {
  211.          int windex = WindowFind (shortName);
  212.          string objectName = almostUniqueIndex + "_diff_" + i;
  213.          if ( ObjectFind (objectName) == -1)
  214.          {
  215.             if (ObjectCreate (objectName, OBJ_VLINE, windex, Time[i], 0))
  216.             {
  217.                ObjectSet (objectName, OBJPROP_COLOR, colorDifference);
  218.                ObjectSet (objectName, OBJPROP_BACK, true);
  219.                ObjectSet (objectName, OBJPROP_WIDTH, 8);
  220.                
  221.             }
  222.          }
  223.       
  224.       }

  225.    }
  226.    
  227.    return(0);
  228. }

  229. //获取slop值
  230. double GetSlope(string symbol, int tf, int shift)
  231. {
  232.    double dblTma, dblPrev;
  233.    double gadblSlope = 0.0;

  234.    double atr = iATR(symbol,tf,100,shift+10) / 10;      // 计算平均真实波动范围指标并返回其值。
  235.    
  236.    if (atr != 0)
  237.    {
  238.       if (ignoreFuture)
  239.       {
  240.          dblTma     = calcTmaTrue( symbol, tf, shift);
  241.          dblPrev    = calcPrevTrue(symbol, tf, shift);
  242.       }
  243.       else
  244.       {   
  245.          dblTma     = calcTma(symbol,tf,shift);
  246.          dblPrev    = calcTma(symbol,tf,shift+1);
  247.       }   
  248.          gadblSlope = (dblTma - dblPrev) / atr;
  249.    }
  250.    
  251. return (gadblSlope);

  252. }

  253. //+------------------------------------------------------------------+
  254. //| calcTma()                                                        |
  255. //+------------------------------------------------------------------+
  256. double calcTma(string symbol, int tf,  int shift)
  257. {
  258.    int jnx, knx;
  259.    double dblSum  = (HalfLength+1) * iMA(symbol,tf,1,0,MODE_SMA,Price,shift);
  260.    double dblSumw = (HalfLength+1);
  261.    
  262.    for (jnx = 1, knx = HalfLength; jnx <= HalfLength; jnx++, knx--)
  263.    {
  264.       dblSum  += iMA(symbol,tf,1,0,MODE_SMA,Price,shift+jnx)*knx;
  265.       dblSumw += knx;

  266.       if (jnx <= shift)
  267.       {
  268.          dblSum  += iMA(symbol,tf,1,0,MODE_SMA,Price,shift-jnx)*knx;
  269.          dblSumw += knx;
  270.       }
  271.    }
  272.    
  273. return (dblSum/dblSumw);
  274. }

  275. //+------------------------------------------------------------------+
  276. //| calcTmaTrue()                                                    |
  277. //+------------------------------------------------------------------+
  278. double calcTmaTrue(string symbol, int tf, int inx )
  279. {
  280.    return (iMA(symbol,tf,HalfLength,0, MODE_LWMA, PRICE_CLOSE,inx));
  281. }

  282. //+------------------------------------------------------------------+
  283. //| calcPrevTrue()                                                   |
  284. //+------------------------------------------------------------------+
  285. double calcPrevTrue( string symbol, int tf, int inx )
  286. {
  287.    double dblSum  = (HalfLength+1) * iMA(symbol,tf,1,0,MODE_SMA,Price,inx+1);
  288.    double dblSumw = (HalfLength+1);
  289.    int jnx, knx;
  290.    
  291.    dblSum  += HalfLength * iMA(symbol,tf,1,0,MODE_SMA,Price,inx);
  292.    dblSumw += HalfLength;
  293.          
  294.    for ( jnx = 1, knx = HalfLength; jnx <= HalfLength; jnx++, knx-- )
  295.    {
  296.       dblSum  += iMA(symbol,tf,1,0,MODE_SMA,Price,inx+1+jnx ) * knx;
  297.       dblSumw += knx;
  298.    }
  299.    
  300. return (dblSum/dblSumw);
  301. }

  302. //+------------------------------------------------------------------+
  303. //| CalculateCurrencySlopeStrength(int tf, int shift                 |
  304. //+------------------------------------------------------------------+
  305. void CalculateCurrencySlopeStrength(int tf, int shift)
  306. {
  307.    int i;

  308.    for ( i = 0; i < symbolCount; i++)
  309.    {
  310.       double slope = GetSlope(symbolNames[i], tf, shift);
  311.       currencyValues[GetCurrencyIndex(StringSubstr(symbolNames[i],0,3))] += slope;
  312.       currencyValues[GetCurrencyIndex(StringSubstr(symbolNames[i],3,3))] -= slope;
  313.    }
  314.    for (i = 0; i < huobiduishuliang; i++) {  currencyValues[i] /= currencyOccurrences[i]; }
  315. }

  316. //+------------------------------------------------------------------+
  317. //| ShowCurrencyTable()                                              |
  318. //+------------------------------------------------------------------+
  319. void ShowCurrencyTable()
  320. {
  321.    int    i;
  322.    int    tempValue;
  323.    string objectName;
  324.    string showText;
  325.    color  showColor;
  326.    int    windex = WindowFind (shortName);

  327.    if (showOnlySymbolOnChart)
  328.    {
  329.       for (i = 0; i < 2; i++)
  330.       {
  331.          int index  = GetCurrencyIndex(StringSubstr(Symbol(),3*i,3));
  332.          objectName = almostUniqueIndex + "_css_obj_column_currency_" + i;
  333.          
  334.          if (ObjectFind (objectName) == -1)
  335.          {
  336.             if (ObjectCreate (objectName, OBJ_LABEL, windex, 0, 0))
  337.             {
  338.                ObjectSet (objectName, OBJPROP_CORNER,1);
  339.                ObjectSet (objectName, OBJPROP_XDISTANCE,  horizontalShift * 0 + horizontalOffset + 70);
  340.                ObjectSet (objectName, OBJPROP_YDISTANCE, (verticalShift + 6) * i + verticalOffset - 18);
  341.             }
  342.          }
  343.          ObjectSetText (objectName, currencyNames[index], 14, nonPropFont, currencyColors[index]);

  344.          objectName = almostUniqueIndex + "_css_obj_column_value_" + i;
  345.          if (ObjectFind (objectName ) == -1)
  346.          {
  347.             if (ObjectCreate (objectName, OBJ_LABEL, windex, 0, 0))
  348.             {
  349.                ObjectSet (objectName, OBJPROP_CORNER, 1);
  350.                ObjectSet (objectName, OBJPROP_XDISTANCE, horizontalShift * 0 + horizontalOffset - 65 + 70);
  351.                ObjectSet (objectName, OBJPROP_YDISTANCE, (verticalShift + 6) * i + verticalOffset - 18);
  352.             }
  353.          }
  354.          showText = RightAlign(DoubleToStr(currencyValues[index], 2), 5);
  355.          ObjectSetText (objectName, showText, 14, nonPropFont, currencyColors[index]);
  356.       }
  357.       objectName = almostUniqueIndex + "_css_obj_column_currency_3";
  358.       if (ObjectFind ( objectName ) == -1)
  359.       {
  360.          if (ObjectCreate (objectName, OBJ_LABEL, windex, 0, 0))
  361.          {
  362.             ObjectSet (objectName, OBJPROP_CORNER, 1);
  363.             ObjectSet (objectName, OBJPROP_XDISTANCE, horizontalShift * 0 + horizontalOffset + 5);
  364.             ObjectSet (objectName, OBJPROP_YDISTANCE, (verticalShift + 6) * 2 + verticalOffset - 10);
  365.          }
  366.       }
  367.       showText = "threshold = " + DoubleToStr(differenceThreshold, 1);
  368.       ObjectSetText (objectName, showText, 8, nonPropFont, Yellow);
  369.    }
  370.    else
  371.    {
  372.      
  373.       double tempCurrencyValues[huobiduishuliang][3];
  374.    
  375.       for (i = 0; i < huobiduishuliang; i++)
  376.       {
  377.          tempCurrencyValues[i][0] = currencyValues[i];
  378.          tempCurrencyValues[i][1] = NormalizeDouble(currencyValuesPrior[i], 2);
  379.          tempCurrencyValues[i][2] = i;
  380.       }
  381.    
  382.       ArraySort(tempCurrencyValues, WHOLE_ARRAY, 0, MODE_DESCEND);

  383.       int horizontalOffsetCross = 0;
  384.       for (i = 0; i < huobiduishuliang; i++)
  385.       {
  386.          objectName = almostUniqueIndex + "_css_obj_column_currency_" + i;
  387.          if (ObjectFind (objectName ) == -1)
  388.          {
  389.             if (ObjectCreate (objectName, OBJ_LABEL, windex, 0, 0))
  390.             {
  391.                ObjectSet (objectName, OBJPROP_CORNER, 1);
  392.                ObjectSet (objectName, OBJPROP_XDISTANCE, horizontalShift * 0 + horizontalOffset + 150);
  393.                ObjectSet (objectName, OBJPROP_YDISTANCE, (verticalShift + 2) * i + verticalOffset - 18);
  394.             }
  395.          }
  396.          tempValue = tempCurrencyValues[i][2];
  397.          showText = currencyNames[tempValue];
  398.          ObjectSetText (objectName, showText, 12, nonPropFont, currencyColors[tempValue]);

  399.          objectName = almostUniqueIndex + "_css_obj_column_value_" + i;
  400.          if (ObjectFind ( objectName ) == -1)
  401.          {
  402.             if (ObjectCreate (objectName, OBJ_LABEL, windex, 0, 0))
  403.             {
  404.                ObjectSet (objectName, OBJPROP_CORNER, 1 );
  405.                ObjectSet (objectName, OBJPROP_XDISTANCE, horizontalShift * 0 + horizontalOffset - 55 + 150);
  406.                ObjectSet (objectName, OBJPROP_YDISTANCE, (verticalShift + 2) * i + verticalOffset - 18);
  407.             }
  408.          }
  409.          showText = RightAlign(DoubleToStr(tempCurrencyValues[i][0], 2), 5);
  410.          ObjectSetText (objectName, showText, 12, nonPropFont, currencyColors[tempValue]);

  411.          objectName = almostUniqueIndex + "_css_obj_column_cross_" + i;
  412.          if (showCrossAlerts && i < huobiduishuliang-1 && NormalizeDouble(tempCurrencyValues[i][0],2) > NormalizeDouble(tempCurrencyValues[i+1][0],2)
  413.               && tempCurrencyValues[i][1] < tempCurrencyValues[i+1][1])
  414.          {
  415.             showColor = colorStrongCross;
  416.               if (tempCurrencyValues[i][0] > 0.8 || tempCurrencyValues[i+1][0] < -0.8 ) { showColor = colorWeakCross;   }
  417.          else if (tempCurrencyValues[i][0] > 0.4 || tempCurrencyValues[i+1][0] < -0.4 ) { showColor = colorNormalCross; }

  418.             DrawCell(windex,objectName,horizontalShift*0 + horizontalOffset + 88 + horizontalOffsetCross, (verticalShift + 2) * i + verticalOffset - 20, 1, 27, showColor );
  419.                         SendNotification("出现交易信号");
  420.             if (horizontalOffsetCross == 0) { horizontalOffsetCross = -4; }
  421.             else                            { horizontalOffsetCross = 0;  }
  422.             }
  423.             else                            { DeleteCell(objectName);
  424.                                               horizontalOffsetCross = 0;  }
  425.             }
  426.       }
  427. }

  428. //+------------------------------------------------------------------+
  429. //| Right Align Text                                                 |
  430. //+------------------------------------------------------------------+
  431. string RightAlign (string text, int length = 10, int trailing_spaces = 0)
  432. {
  433.    string text_aligned = text;
  434.    for (int i = 0; i < length - StringLen (text) - trailing_spaces; i++)
  435.    {
  436.       text_aligned = " " + text_aligned;
  437.    }
  438.    return (text_aligned);
  439. }

  440. //+------------------------------------------------------------------+
  441. //| DrawCell(), credits go to Alexandre A. B. Borela                 |
  442. //+------------------------------------------------------------------+
  443. void DrawCell (int nWindow, string nCellName, double nX, double nY, double nWidth, double nHeight, color nColor)
  444. {
  445.    double   iHeight, iWidth, iXSpace;
  446.    int      iSquares, i;

  447.    if (nWidth > nHeight)
  448.    {
  449.       iSquares = MathCeil (nWidth / nHeight);
  450.       iHeight  = MathRound((nHeight *100) / 77);
  451.       iWidth   = MathRound((nWidth * 100) / 77);
  452.       iXSpace  = iWidth / iSquares - ((iHeight / (9 - (nHeight / 100))) * 2);

  453.       for (i = 0; i < iSquares; i++)
  454.       {
  455.          ObjectCreate   (nCellName + i, OBJ_LABEL, nWindow, 0, 0);
  456.          ObjectSetText  (nCellName + i, CharToStr ( 110 ), iHeight, "Wingdings", nColor);
  457.          ObjectSet      (nCellName + i, OBJPROP_CORNER, 1);
  458.          ObjectSet      (nCellName + i, OBJPROP_XDISTANCE, nX + iXSpace * i);
  459.          ObjectSet      (nCellName + i, OBJPROP_YDISTANCE, nY);
  460.          ObjectSet      (nCellName + i, OBJPROP_BACK, true);
  461.       }
  462.    }
  463.    else
  464.    {
  465.       iSquares = MathCeil (nHeight / nWidth);
  466.       iHeight  = MathRound ((nHeight* 100) / 77);
  467.       iWidth   = MathRound ((nWidth * 100) / 77);
  468.       iXSpace  = iHeight / iSquares - ((iWidth / (9 - (nWidth / 100))) * 2);

  469.       for ( i = 0; i < iSquares; i++ )
  470.       {
  471.          ObjectCreate   (nCellName + i, OBJ_LABEL, nWindow, 0, 0);
  472.          ObjectSetText  (nCellName + i, CharToStr (110), iWidth, "Wingdings", nColor);
  473.          ObjectSet      (nCellName + i, OBJPROP_CORNER, 1);
  474.          ObjectSet      (nCellName + i, OBJPROP_XDISTANCE, nX);
  475.          ObjectSet      (nCellName + i, OBJPROP_YDISTANCE, nY + iXSpace * i);
  476.          ObjectSet      (nCellName + i, OBJPROP_BACK, true);
  477.       }
  478.    }
  479. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享 分享淘帖 支持支持 保留保留

47

主题

5374

积分

2

精华

高级操盘手

金钱
5374 美元
权重
0
沙发
发表于 2017-6-28 07:39 来自手机 | 只看该作者
都神一样的存在

12

主题

712

积分

0

精华

初级操盘手

金钱
712 美元
权重
1
板凳
发表于 2017-6-28 16:25 | 只看该作者
mark一下,以后研究。
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
皖ICP备: 2024050410号-2

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

快速回复 返回顶部 返回列表