`
walksing
  • 浏览: 217087 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

观察均线赢利能力 MAProfit

 
阅读更多
//[i] 观察均线赢利能力 MAProfit

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Yellow

#import "speak.dll"
void gRate(int rate);
void gVolume(int rate);
void gPitch(int rate);
void gSpeak(string text);
#import

#define SIGNAL_NONE  0
#define SIGNAL_SHORT 1
#define SIGNAL_LONG  2

extern bool bOptimize= true;                    // True: Find the best single MA by optimizing(switch time frame to re-optimize)
extern bool bOptimizeIntersect= true;           // True: optimize for minimum intersections, otherwise optimize for max profit
extern int  PeriodMA= 400;                     // If you do not want to optimize, you can define a period
extern int  Method= 0;                         // Method for MA 0= Simple, 1= Expotential, 2= Smoothed, 3= Linear weighted
extern bool DrawTringles= true;                // Draws triangles for the simulated trading
extern int  MinMA= 5;                          // Minimum test for optimizing
extern int  MaxMA= 500;                        // Maximum test for optimizing
extern int  StepMA= 1;                         // Step during optimizion, 1 tests every MA, 10 tests every 10th etc.
extern int  CountOptimize= 300;                // Number of candles for optimizing
extern int  RepaintBars= 3000;                 // Number of candles on which we draw triangles and calculate the win/loss
extern bool Alarm= true;                       // Make a visible alert on new signal
extern bool bSpeak= true;                       // Speak the alert with gspeak

string AlertShort= "alert.wav";
string AlertLong= "alert.wav";

bool     bNeedOptimize;
int      ColorLongTrade= MediumSpringGreen;
int      ColorShortTrade= Red;
int      ColorBadTrade= Violet;
bool     bAlertViaAlert= true;
datetime lastSignalTime= 0;
datetime firstTradeCandle;                    // we trade 300 candles but at all calls it should be the same candle

int Method1= MODE_SMA;
int Method2= MODE_SMA;
int Price1= PRICE_MEDIAN;
int Price2= PRICE_HIGH;
int Price3= PRICE_LOW;                                                     

double ExtMapBuffer[];                            // Fast MA curve
double ExtMapBuffer2[];                            // Fast MA curve
int    OldPeriod;                                        // The period, we check for changes and re-init ourself
int    规定点差;                           
int    cBars;                                            // Saved number of bars in order to see if new bar
string OldSymbol;                                     // If symbol canges, we re-initialize
string rsiMessage;                                    // Last Message RSI Oversold/Overbought

int    MaxObj= 0;
int    yesterday, today;        // index of yesterday and today

double gTradeOpen[],
       gTradeMin[],
       gTradeMax[];
int    gTradeCmd[],
       gTradeStart[],
       gTradeEnd[],
       gTradeID;      
  
int    gStartShort,
       gEndShort,
       gStartLong,
       gEndLong;    

//------------------初始化---------------------+

bool bInit;
int init()
  {
   OldPeriod= -1;
   OldSymbol= "";
   bNeedOptimize= true;
   lastSignalTime= 0  ;
  
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexBuffer(0, ExtMapBuffer);
   SetIndexBuffer(1, ExtMapBuffer2);
  
   IndicatorShortName("Cross Moving Average");
   SetIndexLabel(0, "Fast Moving Average");
   makelabel("profit", 0, 20, "Profit Total", White);  
   makelabel("profityesterday", 300, 20, "Profit Total", White);  
   makelabel("signal", 500, 20, "Signal", White);
   makelabel("message", 600, 20, "Message", White); 
   makelabel("message2", 600, 40, "Message", White); 
   makelabel("hint", 400, 0, "MAProfit(C) Thomas Quester", White);
   makelabel("hint2", 600, 0, "look at source code for description", White);
   cBars= 0;
   ArrayResize(gTradeOpen, 500);
   ArrayResize(gTradeMin, 500);
   ArrayResize(gTradeMax, 500);
   ArrayResize(gTradeCmd, 500);
   ArrayResize(gTradeStart, 500);
   ArrayResize(gTradeEnd, 500);
   SendVars();
   firstTradeCandle= 0;

   bInit= true;
  
   return(0);
  }

//------------------反初始化---------------------+

int deinit()
  {
   DeleteObjects(); 
   DelVars();
   return(0);
  }
 
//------------------主函数---------------------+

int start()
  {
   int    已计= IndicatorCounted();
   规定点差= MarketInfo(Symbol(), MODE_SPREAD);
  
   int         i;                      // some running integer
   int         start;
   int         objid;                  // the number of triangles
   string      name;                   // name of triangle
   double      d;                      // some double
   double      maPeriod;               // moving average Period
   double      profit= 0;             // profit of "trade" as difference between open and close
   double      open;                   // the open price
   int         day;                    // the day
   datetime    opentime;               // the time of open trade
   int         openid;                 // the index of open trade
   int         signal, s;               // active and new singal
   double      totalProfit;            // total profit
  
   double      totalProfitYesterday;    // total profit yesterday
   bool        newBar;
   string      speak;
   string      alert;
   double      ma, price, maHigh;
  
   if(bNeedOptimize)
      Optimize();
   bNeedOptimize= false;

   speak= "*";
   alert= "*";
   //SpeakRSI();  
   signal= SIGNAL_NONE;
   if(Bars!=cBars)
      newBar= true;
   else 
      newBar= false;
   cBars= Bars;

   //if(Period()!=OldPeriod || Symbol()!=OldSymbol)
   if(bInit){
      OldPeriod= Period();
      OldSymbol= Symbol();
      Print("Symbol Changed, last Speak time set to ", TimeToStr(lastSignalTime));
     }
   objid= 0;
   //--删除旧物件
   if(newBar)
      DeleteObjects();
  
   //--when starts today?
   CalcDays();
   totalProfit= 0;
   totalProfitYesterday= 0;
  
   if(lastSignalTime==0)
      lastSignalTime= Time[0];
   ObjectCreate("today", OBJ_VLINE, 0, Time[today], 0);
   ObjectCreate("yesterday", OBJ_VLINE, 0, Time[yesterday], 0);
  
   start= Bars;
   if(start>RepaintBars)
      start= RepaintBars;
   if(RepaintBars!=0)
      if(start>RepaintBars)
         start= RepaintBars;
   ma= iMA(NULL, NULL, PeriodMA, 0, Method, PRICE_MEDIAN, start);
  
  
   // find first bar to start trading
  
   int tradeStart= RepaintBars;
   if(firstTradeCandle==0){
      if(Bars>RepaintBars){
         firstTradeCandle= Time[RepaintBars];
         tradeStart= RepaintBars;
        }
      else{
         firstTradeCandle= Time[Bars];
         tradeStart= Bars;
        }
     }
   else{
      for(i= 0;i<Bars;i++){
         if(Time[i]==firstTradeCandle){
            tradeStart= i;
            break;
           }
        }
     }
   //Print("TradeStart= ", tradeStart, " Trade Start Time= ", TimeToStr(firstTradeCandle));
   int good= 0;
   int fails= 0;
   int totalWin= 0;
   for(i=Bars; i>=0; i--){
      ma= iMA(NULL, NULL, PeriodMA, 0, Method, PRICE_LOW, i);
      maHigh= iMA(NULL, NULL, PeriodMA, 0, Method, PRICE_HIGH, i);
      ExtMapBuffer[i]= ma;
      ExtMapBuffer2[i]= maHigh;
     
      if(i<tradeStart){
         price= (High[i]+Low[i])/2;
         s= signal;
        
           {
            if(Low[i]<ma)
               s= SIGNAL_SHORT;
            if(High[i]>maHigh)
               s= SIGNAL_LONG;
           }
         if(s!=signal){
            if(s==SIGNAL_SHORT){
               if(Time[i]>lastSignalTime && bSpeak){
                  Print("Speak time ", TimeToStr(Time[i]));
                  lastSignalTime= Time[i];
                  alert= AlertShort;
                  speak= "New signal at "+PairName(Symbol())+ " "+SpeakTime()+". signal is short. ";
                  SetText("signal", "Short");
                 }
              }
         
            if(s==SIGNAL_LONG){
               if(Time[i]>lastSignalTime && bSpeak){
                  Print("Speak time ", TimeToStr(Time[i]));
                  lastSignalTime= Time[i];
                  alert= AlertLong;
                  speak= "New signal at "+PairName(Symbol()) + " " + SpeakTime()+". Signal is long. ";
                  SetText("signal", "Long");
                 }
              }
         
            profit= 0;
            if(signal==SIGNAL_SHORT){
               profit= open-Close[i];
               profit /= Point;
               profit -= 规定点差;
              }
            if(signal==SIGNAL_LONG){
               profit= Close[i]-open;
               profit /= Point;
               profit -= 规定点差;
              }
            totalWin+= profit;
            if(profit<0)
               fails++;
            if(profit>0)
               good++;
         
            if(signal!=SIGNAL_NONE){
               objid++;
               DrawTriangle(objid, signal, opentime, Open[openid], Time[i], Close[i], profit);             
              }
         
            //ExtMapBuffer2[i]= profit;
            if(i<=today)
               totalProfit+= profit;
            if(i<=yesterday && i>today)
               totalProfitYesterday+= profit;
            opentime= Time[i];
            openid= i;
            signal= s;
            open= Open[i];
           }
         profit= 0;
        }
     }
   //--terminate open "trade"
     
   if(signal!=SIGNAL_NONE){
      i= 0;
      if(signal==SIGNAL_SHORT){
         profit= open-Close[i];
         profit /= Point;
         profit -= 规定点差;
         SetText("signal", "Short");
        }
           
      if(signal==SIGNAL_LONG){
         profit= Close[i]-open;
         profit /= Point;
         profit -= 规定点差;
         SetText("signal", "Long");
        }
       
      //ExtMapBuffer2[i]= profit;
      totalProfit += profit;
      totalWin += profit;
      if(profit<0)
         fails++;
      if(profit>0)
         good++;
       
      objid++;
      DrawTriangle(objid, signal, opentime, Open[openid], Time[i], Close[i], profit);
     }
   
   i= totalProfit;
   SetText("profit", "Profit totay with MA "+PeriodMA+" is "+i+" Pips");
   SetText("message2", "Total Profit= "+totalWin+" Fails= "+fails+" Wins= "+good);
   if(totalWin < 0)
      ObjectSet("message2", OBJPROP_COLOR, Red);
   else
      ObjectSet("message2", OBJPROP_COLOR, GreenYellow);
   i= totalProfitYesterday;
   SetText("profityesterday", "Profit yesterday is "+i+" Pips");
  
   MaxObj= objid+1;
   bInit= false;

   if(alert!="*")
      Alert(alert);
   if(speak!="*")
      LoudAlert(speak);
     
   return(0);
  }
   
//---------------------------------------+

void SendVars()
  {
   string sym= Symbol()+Period();
   GlobalVariableSet(sym+"PeriodMA", PeriodMA);
   GlobalVariableSet(sym+"Method", Method);
  }  
 
//---------------------------------------+

void GetVars()
  {
   string sym= Symbol()+Period();
   PeriodMA= GlobalVariableGet(sym+"PeriodMA");
  
   Method= GlobalVariableGet(sym+"Method");
  }  
 
//---------------------------------------+

void DelVars()
  {
   string sym= Symbol()+Period();
   GlobalVariableDel(sym+"PeriodMA");
  
   GlobalVariableDel(sym+"Method");
  }  

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

void LoudAlert(string s)
  {
   if(bAlertViaAlert)
      Alert(s);
   Print(s);
   if(bSpeak)
      gSpeak(s);        // uncomment this for speak
  }
 
//---------------------------------------+

string FormatNumber(string s)
  {
   int c;
   while(true){
      c= StringGetChar(s, StringLen(s)-1);
      if(c!='.' && c!='0')
         break;
       s= StringSubstr(s, 0, StringLen(s)-1);
     }
   return(s);
  }
 
//---------------------------------------+

string LongName(string s)
  {
   if(s=="EUR")    s= "Euro ";
   if(s=="USD")    s= "US Dollar ";
   if(s=="JPY")    s= "Japanese Yen";
   if(s=="CAD")    s= "Canadian Dollar";
   if(s=="AUD")    s= "Australian Dollar";
   if(s=="NZD")    s= "New Zeeland Dollar";
   if(s=="CHF")    s= "Swiss Francs";
   return(s);
  }
 
//---------------------------------------+

string PairName(string s)
  {
   string a, b;
   a= StringSubstr(s, 0, 3);
   b= StringSubstr(s, 3, 3);
   a= LongName(a);
   if(StringLen(a)>3)
      a= a + " to ";
   b= LongName(b);
   return(a+b);
  }
 
//---------------------------------------+

string SpeakTime()
  {
   int p;
   string s;
   p= Period();
   switch(p){
       case 30:    s= "half hour";  break;
       case 60:    s= "One hour";   break;
       case 120:   s= "Two horus";  break;
       case 240:   s= "Four hours"; break;
       case 1440:  s= "One day";    break;
       case 10080: s= "One week";  break;
       case 43200: s= "One month"; break;
       default:    s= p+" Minutes";
     }
   return(s);
  }

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


int trades;
double wins, losses;

double CalcProfit(int bars, int mode1, int price1, int mode2, int price2, int price3, int periodMA)
  {
   double ma;                // moving average small and long value
   double profit= 0;             // profit of "trade" as difference between open and close
   double totalProfit;
   int    i, gOpenTime, openid;
   double d, open, price, min, max;
   int    s, signal;
   signal= SIGNAL_NONE;
   totalProfit= 0;
   open= 0;
   gTradeID= -1;
  
   for(i=bars; i>=0; i--){
      ma= iMA(NULL, NULL, periodMA, 0, mode1, price1, i);
      s= signal;
      price= (High[i]+Low[i])/2;
      if(ma < price) s= SIGNAL_SHORT;
      if(ma>price) s= SIGNAL_LONG;
      // calc min/max
  
      if(signal!=SIGNAL_NONE){
         if(price<min)
            min= price;
         if(price>max)
            max= price;
        }
      if(s!=signal){
         if(gTradeID>=0){
              gTradeMin[gTradeID]= min;
              gTradeMax[gTradeID]= max;
              gTradeEnd[gTradeID]= i;
              gTradeCmd[gTradeID]= s;
            }
          gTradeID++;
          gTradeOpen[gTradeID]= price;
          gTradeStart[gTradeID]= i;
          gTradeEnd[gTradeID]= 0;
          min= 99999;
          max= -9999;
          profit= 0;
          if(signal==SIGNAL_SHORT){
             profit= open-price;
             profit /= Point;
             profit -= 规定点差;
             totalProfit += profit;
            }
           
          if(signal==SIGNAL_LONG){
             profit= price-open;
             profit /= Point;
             profit -= 规定点差;
             totalProfit += profit;
            }
           
          gOpenTime= Time[i];
          openid= i;
          signal= s;
          open= price;
         }
      }
  
     
   if(signal!=SIGNAL_NONE){
      profit= 0;
      i= 0;
      if(signal==SIGNAL_SHORT){
         profit= open-Open[i];
         profit /= Point;
         profit -= 规定点差;
         totalProfit += profit;
        }
        
      if(signal==SIGNAL_LONG)  {
         profit= Open[i]-open;
         profit /= Point;
         profit -= 规定点差;
         totalProfit += profit;
        }
     }
   return(totalProfit);
  }
 
//---------------------------------------+

void Optimize()
  {
   if(bOptimize) {
      if(bOptimizeIntersect)
         OptimizeIntersects();
      else
         OptimizeAll();
     }
   else 
      SetText("message", "Optimizing is disabled");
  }   
 
//---------------------------------------+

void OptimizeIntersects()
  {
   int i, s, intersects, minInterSects;
   double ma;
   minInterSects= 9999;
   for(s= MinMA; s<= MaxMA;s+= StepMA){
      intersects= 0;
      for(i= CountOptimize;i>=0;i--){
         ma= iMA(NULL, NULL, s, 0, Method, PRICE_MEDIAN, i);
         if(ma>=Low[i] && ma <= High[i])
            intersects++;}
      if(intersects < minInterSects){
         minInterSects= intersects;
         PeriodMA= s;
        }
     }
   SetText("message", "BestMA= "+PeriodMA+" Intersects= "+minInterSects);
  }                
 
//---------------------------------------+
             
void OptimizeAll()
  {
    double profit, maxProfit;
    int s, l, a;
    int bestMA;
    bestMA= 0;
   
    maxProfit= -9999;
    for(s= MinMA; s<=MaxMA; s+=StepMA){
       //a= s*130;
       //a /= 100;
       profit= CalcProfit(CountOptimize, Method, PRICE_MEDIAN, Method, PRICE_HIGH, PRICE_LOW, s);

       if(profit>maxProfit && profit!=0){
          bestMA= s;
          maxProfit= profit;
         }
      }
    Method1= Method;
    Method2= Method;
    Price1= PRICE_MEDIAN;
    Price2= PRICE_HIGH;
    Price3= PRICE_LOW;
    PeriodMA= bestMA;
    SetText("message", "BestMA= "+PeriodMA+" Profit= "+maxProfit);

    SendVars();
   }
 
//---------------------------------------+

void CalcDays()
  {
   int 日期;
   int i;
   日期= TimeDay(Time[0]);
   for(i=0; i<Bars; i++){
      if(TimeDay(Time[i])!=日期){
         today= i-1;
         break;
        }
     }
   //--when starts yesterday
   日期= TimeDay(Time[today+1]);
   for(i=today+1; i<Bars; i++){
      if(TimeDay(Time[i])!=日期){
         yesterday= i-1;
         break;
        }
     }
  }
 
//---------------------------------------+

void DrawTriangle(int objid, int signal, datetime opentime, double openprice, datetime timenow, double pricenow, double profit)
  {
   string name;
   int i;
   if(DrawTringles){
      //Print("signal= ", Sig2Str(signal), " open= ", openprice, " close= ", pricenow, " profit= ", profit);
      name= "profit"+objid;
      ObjectCreate(name, OBJ_TRIANGLE, 0, opentime, openprice, timenow, openprice, timenow, pricenow);
      if(signal==SIGNAL_SHORT)
         ObjectSet(name, OBJPROP_COLOR, ColorShortTrade);
      else
         ObjectSet(name, OBJPROP_COLOR, ColorLongTrade);
      ObjectSet(name, OBJPROP_BACK, false);
      if(profit<0){
         ObjectSet(name, OBJPROP_WIDTH, 1);
        }
      else
         ObjectSet(name, OBJPROP_WIDTH, 3);
     }
   name= "win"+objid;
   i= profit;
  
   ObjectCreate(name, OBJ_TEXT, 0, timenow, pricenow-20*Point);
   ObjectSetText(name, i+" Pips", 8, "Tahoma", White);
  }
 
//---------------------------------------+

void DeleteObjects()
  {
   int i;
   string name;
   for(i=0; i<500; i++){
      name= "profit"+i;
      ObjectDelete(name);
      name= "win"+i;
      ObjectDelete(name);
     }
   /*
   for(i= 0;i<CountOptimize;i++)
   {
       name= "mas"+Time[i];
       ObjectDelete(name);

       name= "masO"+Time[i];
       ObjectDelete(name);
       name= "masC"+Time[i];
       ObjectDelete(name);

       name= "mal"+Time[i];
       ObjectDelete(name);
     }
    */
   MaxObj= 0;
  }
 
//---------------------------------------+

void makelabel(string lblname, int x, int y, string txt, color txtcolor)
  {
   ObjectCreate(lblname, OBJ_LABEL, 0, 0, 0);
   ObjectSet(lblname, OBJPROP_CORNER, 0);
   ObjectSetText(lblname, txt, 8, "Verdana", txtcolor);
   ObjectSet(lblname, OBJPROP_XDISTANCE, x);
   ObjectSet(lblname, OBJPROP_YDISTANCE, y);
  }
 
//---------------------------------------+

void SetText(string name, string txt)
  {
   ObjectSetText(name, txt, 7, "Verdana", White);
  }
 
//---------------------------------------+

void Rectangle(string name, datetime time, double price, int col)
  {
   string name1;
   name1= name + Time[time];
   ObjectCreate(name1, OBJ_RECTANGLE, 0, Time[time], price, Time[time+1], price+Point/2);
   ObjectSet(name1, OBJPROP_COLOR, col);
  }
 
//---------------------------------------+

void Rectangle2(string name, datetime time, datetime time2, double price, int col)
  {
   string name1;
   name1= name + time;
   ObjectCreate(name1, OBJ_RECTANGLE, 0, time, price, time2, price+Point/2);
   ObjectSet(name1, OBJPROP_COLOR, col);
  }

// creates a speakable text about other symbols
 
//---------------------------------------+

string Sig2Str(int signal)
  {
   string r= "undef";
   switch(signal){
      case SIGNAL_NONE: r= "none"; break;
      case SIGNAL_LONG: r= "long"; break;
      case SIGNAL_SHORT: r= "short"; break;
     }
   return(r);
  }
 
//---------------------------------------+
分享到:
评论

相关推荐

    MT4变色均线_变色均线_变色指标_mt4_外汇指标_mt4均线变色_

    总的来说,MT4的变色均线是一种强大的交易工具,它通过视觉提示帮助交易者快速识别市场趋势,但同时也要求使用者具备一定的市场理解和风险管理能力。熟练掌握并灵活运用这种指标,可以显著提升交易效率,但不应忽视...

    均线之花sarlery:均线以及交易系统.pdf

    均线之花 sarlery:均线以及交易系统 在技术分析中,均线是一种非常重要的工具,能够帮助投资者判断股票的走势和趋势。本文将详细介绍均线的两两组合使用情况,包括不同的周期组合和具体的应用方法。 一、均线的...

    文华财经指标公式源码均线指标变色均线.doc

    文华财经指标公式源码均线指标变色均线.doc 文华财经指标公式源码均线指标变色均线.doc是财经指标公式的源码,用于生成均线指标,并对其进行变色处理。本节将详细解释标题、描述、标签和部分内容中的知识点。 标题...

    经典1小时-144均线数值_144均线_mt4_MT4指标_均线_

    在金融交易领域,技术分析是投资者常用的一种策略,其中,均线指标是不可或缺的工具之一。本文将详细讨论“144均线”以及其在MT4(MetaTrader 4)平台上的应用,结合“经典1小时-144均线数值”这一主题,探讨这一...

    均线交叉报警指标

    均线交差报警指标,均线交差报警指标均线交差报警指标均线交差报警指标均线交差报警指标

    均线EA单均线系统.ex4

    均线EA单均线,K线与均线金叉做多,死叉做空,自由设定参数。

    外汇EA_mt4双均线交易_mt4双均线ea_外汇EA_

    标题中的“外汇EA_mt4双均线交易_mt4双均线ea_外汇EA”指的是基于MetaTrader 4(MT4)交易平台的自动交易系统,通常被称为Expert Advisor(EA)。这个EA是设计用于外汇市场的交易策略,其核心是基于双移动平均线(MA...

    MT4编程实例:会变色的均线.doc

    标题与描述中提到的“MT4编程实例...总之,MT4编程实例:会变色的均线,不仅是对技术分析工具的一次创新应用,也是对MT4平台编程能力的深度挖掘。它不仅增强了交易决策的直观性,还为交易者提供了灵活的策略实施框架。

    国泰君安_20160602_金融工程2016中期沙龙_价格走势观察之基于均线的价格分段.pdf

    通过K线可以观察到市场参与者的行为特征。 #### 三、基于单均线的波段划分方法 - **波段定义**:本研究中的波段是指价格围绕均线波动所形成的上升或下降区间。波段的起点和终点分别由价格突破均线的方向性变化来...

    国泰君安_20160531_国泰君安数量化专题之七十四:价格走势观察之基于均线的分段方法.pdf

    国泰君安发布的《价格走势观察之基于均线的分段方法》专题报告,深入探讨了一种新颖的市场分析工具——基于均线的价格分段方法。这种方法旨在通过分析价格与均线之间的关系来识别市场的波动规律,从而帮助投资者更好...

    均线技术兵法

    均线技术兵法是股市分析的重要工具之一,通过对不同周期均线的观察以及背离现象的理解,可以帮助投资者更好地把握市场动态,及时作出决策。然而,需要注意的是,在某些特殊市场状态下,均线背离技术可能不适用,投资...

    均线EA单均线系统.mp4

    均线EA单均线,K线与均线金叉做多,死叉做空,自由设定参数。

    文华财经指标公式源码 多空均线加变色K线.doc

    MAXMA和MINMA可以帮助我们更直观地观察这种排列。 - K线颜色变化:变色K线提供了一种视觉提示,帮助投资者迅速把握市场的多空力量对比。例如,连续出现洋红色K线可能预示着强烈的上升势头,而连续的绿色K线可能意味...

    期货指标公式文华财经期货指标两条均线指标.doc

    在两条均线指标中,需要绘制图形以便于观察价格走势。该文档提供了图形绘制的公式: JJ:A&gt;B&&C&gt;B&&HHV(H,BARSLAST(A&gt;B)),NODRAW; JJ,ICON(1,'ICO1'); 其中,ICON 函数用于绘制图形。 JJ 变量用于检测价格走势的...

    均线交易系统_MA均线源代码_xps_均线_

    均线交易系统,特别是基于MA(移动平均线)的策略,是金融投资领域中常见的技术分析工具,尤其在股票、期货和外汇市场中广泛使用。移动平均线是通过计算一定时间段内的收盘价平均值来平滑价格波动,揭示出趋势的方向...

    mt4 变色均线 变色K线源代码 带EA

    变色均线则是在传统均线基础上进行了优化,当价格穿越均线时,均线颜色会发生变化,从而直观地提醒交易者可能的趋势转变。例如,当短期均线上穿长期均线形成金叉时,显示为买入信号,反之,形成死叉时,可能预示着卖...

    均线理论精髓(纯干货!!).doc

    均线理论是股票、期货和外汇市场中广泛应用的技术分析工具,主要通过观察不同时间段价格平均值形成的趋势线来预测价格走势。以下是对均线理论的详细解释: 均线,又称移动平均线,是将一段时间内的收盘价、开盘价、...

    变色顾比均线.rar_mt4_seatyts_五彩顾比均线_变色顾比均线_顾比均线变色

    非常好用的一组变色顾比均线组,趋势一目了然,适用于MT4平台

    均线交叉自动交易(1h可以用)_mt4cross_MT4EA_均线EA交叉_均线交叉EA_MT4EA交易_

    均线交叉自动交易是一种基于技术分析策略的自动化交易系统,尤其适用于MetaTrader 4(MT4)平台。在金融市场上,投资者通常使用移动平均线(Moving Average,简称MA)来识别趋势变化和潜在的买卖信号。当短期MA从...

    揭开均线系统的神秘面纱

    4. **乖离率(Bollinger Bands)**:结合布林带,可以观察价格与均线之间的距离,当价格远离均线,可能存在回调风险。 5. **黏合与发散**:当不同周期的均线趋于黏合,可能预示着市场即将出现大行情;相反,当均线...

Global site tag (gtag.js) - Google Analytics