阿賈克斯財經網>策略指標>MetaTrader 4 EA交易>多币种交易程序架构设计-Multi currency transaction program architecture design

多币种交易程序架构设计-Multi currency transaction program architecture design

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

//| muskEAone.mq4 |

//| BillAbiao,QQ:327151901,WX:billabiao |

//| https://one.exness.link/a/sduus6ff |

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

#property copyright "点击开户:BillAbiao,QQ:327151901,WX:billabiao"

#property link "https://one.exness.link/a/sduus6ff"

#property version "1.00"

#property strict

//------------

string userSymbols2[]={"EURUSD","GBPUSD","GBPCHF"};

//string userSymbols2[]={"EURUSD"};

//string userSymbols2[];

string systemSymbols[];

string debugMsg;

double minEquity,maxEquity;

bool stopFlagRun=false;

//----------

struct CONTROL_DATA{

int index;

string strSymbol;

ENUM_TIMEFRAMES timeFrame;//=PERIOD_H2;

int ExtHandle;

// CTrade ExtTrade;

int magicma;

int switchDo;

int orders_buy,orders_sell;

int orders_pending_buy,orders_pending_sell;

double minOpenPrice_buy,minOpenPrice_sell;

ulong maxOpenPrice_buy_ticket;

ulong minOpenPrice_buy_ticket;

double maxOpenPrice_buy,maxOpenPrice_sell;

double maxPendingOpenPrice_buy,maxPendingOpenPrice_sell;

ulong maxPendingOpenPrice_buy_ticket,maxPendingOpenPrice_sell_ticket;

double minPendingOpenPrice_buy,minPendingOpenPrice_sell;

ulong minPendingOpenPrice_buy_ticket,minPendingOpenPrice_sell_ticket;

double profit_buy,profit_sell;

double volume_buy,volume_sell;

ENUM_ORDER_TYPE signal;

double agvLen;

double minOpenPrice_profitBuy;

double maxOpenPrice_profitBuy;

double maxOpenPrice_volume;

double minOpenPrice_buyVolume;

double maxProfitBuy,minProfitBuy;

datetime lastOpenDateTime;

double maxPendingOpenPrice_volume;

double magicN;

double skip;

ulong stopLevel;//=SymbolInfoInteger(d[index].strSymbol,SYMBOL_SPREAD);

double point;

ulong spread;

double lastAsk;

double ask,bid;

int digits;

};

CONTROL_DATA d[];

#define MAGICMA 03082100

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

//| Expert initialization function |

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

int OnInit()

{

//---

initSymbols();

int n=ArraySize(systemSymbols);

ArrayResize(d,n);

for(int i=0;i<n;i++)

{

OnInit_INDEX(i);

}

//---

EventSetTimer(6);

minEquity=0;

maxEquity=0;

return(INIT_SUCCEEDED);

}

void OnInit_INDEX(int index)

{

int k=index;

d[k].index=index;

d[k].strSymbol=systemSymbols[index];

d[k].timeFrame=PERIOD_H1;

d[k].magicma=MAGICMA+index;

d[k].switchDo=1;

d[k].maxProfitBuy=0;

d[k].minProfitBuy=0;

d[k].magicN=5;

d[k].lastAsk=SymbolInfoDouble(d[k].strSymbol,SYMBOL_ASK);

}

void initSymbols()

{

int n=ArraySize(userSymbols2);

ArrayResize(systemSymbols,n);

int i;

for(i=0;i<n;i++)

{

// systemSymbols[i]=userSymbols2[i];

systemSymbols[i]=getSystemSymbol(userSymbols2[i]);

}

return ;

}

string getSystemSymbol(string strSymbol)

{

string ret="";

int n=SymbolsTotal(false);

int i;

string strTemp=strSymbol;

StringToLower(strTemp);

for(i=0;i<n;i++)

{

string name=SymbolName(i,false);

StringToLower( name);

if( strTemp==StringSubstr(name,0,6))

{

ret=SymbolName(i,false);

break;

}

}

return ret;

}

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

//| Expert deinitialization function |

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

void OnDeinit(const int reason)

{

//---

EventKillTimer();

}

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

//| Expert tick function |

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

void OnTick()

{

//---

MainRUN( "Tick " );

return ;

/*

debugMsg="";

mainRun();

Comment(debugMsg);

*/

}

void OnTimer()

{

MainRUN( "Timer" );

return ;

}

bool runFlag=false;

void MainRUN( string strWho)

{

if( runFlag) return ;

runFlag=true;

debugMsg=strWho+": ";

mainRun();

runFlag=false;

Comment(debugMsg);

return ;

}

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

void mainRun()

{

getMainData();

if( stopFlagRun) return ;

int i,n=ArraySize(d);

for( i=0;i<n;i++)

{

subControlSymbol(i);

}

return ;

}

void getMainData()

{

debugMsg+="mainData,";

debugMsg+=StringFormat("date=%s\n", TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS));

double equity=AccountEquity();

if( minEquity==0 || equity<minEquity) minEquity=equity;

if( maxEquity==0 || equity>maxEquity) maxEquity=equity;

debugMsg+=StringFormat("minEquity=%.2f,maxEquity=%.2f,Equity=%.2f\n",minEquity,maxEquity,equity);

if( equity<10)

{

stopFlagRun=true;

}

return ;

}

void subControlSymbol(int index)

{

debugMsg+=StringFormat("%d--> %s\n",index+1, d[index].strSymbol);

control_getdata(index);

switch (d[index].switchDo)

{

case 1:

d[index].switchDo=2;

control_open(index);

break;

case 2:

d[index].switchDo=3;

control_close(index);

break;

case 3:

d[index].switchDo=1;

control_modify(index);

break;

}

//------

debugMsg+="\n";

return ;

}

void control_open(int index)

{

debugMsg+="open\n";

double lots=0.01;

/*

if( d[index].orders_buy==0)

{

double ask=SymbolInfoDouble(d[index].strSymbol,SYMBOL_ASK);

bool res=OrderSend(d[index].strSymbol,OP_BUY,lots,ask,3,0,0,"",d[index].magicma,0,Blue);

return ;

}

if( d[index].orders_sell==0)

{

double bid=SymbolInfoDouble(d[index].strSymbol,SYMBOL_BID);

bool res=OrderSend(d[index].strSymbol,OP_SELL,lots,bid,3,0,0,"",d[index].magicma,0,Red);

return ;

}

*/

if( d[index].ask==d[index].lastAsk){

//debugMsg+="-------------\n";

return ;

}

d[index].lastAsk=d[index].ask;

if( d[index].orders_pending_buy==0 && d[index].orders_buy==0)

{

double ask=SymbolInfoDouble(d[index].strSymbol,SYMBOL_ASK);

double price=ask-d[index].point*(d[index].stopLevel+1);

price=NormalizeDouble(price,d[index].digits);

int res=OrderSend(d[index].strSymbol,OP_BUYLIMIT,lots,price,3,0,0,"",d[index].magicma,0,Blue);

if( res<0 ){

// stopFlagRun=true;

Print("open limit price=",price);

Print("ask=",ask);

}

return ;

}

if( d[index].orders_pending_buy==0) //add pending order

{

double val_1=2*d[index].point*(d[index].stopLevel);

// double val_2=d[index].point*d[index].spread;

double price;//=d[index].minOpenPrice_buy-val_1;//d[index].point*d[index].stopLevel;

double ask=SymbolInfoDouble(d[index].strSymbol,SYMBOL_ASK);

if( ask<d[index].minOpenPrice_buy)

{

price=ask-val_1;

}

else{

price=d[index].minOpenPrice_buy-val_1;

}

//if( ask-price<= val_1*1.5) return ;

lots=countVolumeBuy(index,price);

if( lots<=0) return ;

price=NormalizeDouble(price,d[index].digits);

int res=OrderSend(d[index].strSymbol,OP_BUYLIMIT,lots,price,3,0,0,"",d[index].magicma,0,Blue);

if( res<0 ){

// stopFlagRun=true;

Print("limit price=",price);

Print("ask=",ask);

}

}

return ;

}

double countVolumeBuy(int index, double openPrice)

{

double ret=0;

int i,n=OrdersTotal();

//if( n<=0) return ;

double val=1.5*d[index].point*d[index].stopLevel;

if( val<=0) return ret;

double setPrice=openPrice+val;

double profitAll=0;

for(i=0;i<n;i++)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

continue;

if( OrderSymbol()!=d[index].strSymbol) continue;

if( OrderMagicNumber()!=d[index].magicma) continue;

profitAll+=(OrderOpenPrice()-setPrice)*OrderLots()*100;

}

ret=MathAbs(profitAll)/(100*val);

double maxLots=SymbolInfoDouble(d[index].strSymbol,SYMBOL_VOLUME_MAX);

if( ret>maxLots) ret=maxLots;

if( ret>0 && ret<0.01) ret=0.01;

ret=NormalizeDouble(ret,2);

return ret;

}

void control_close(int index)

{

debugMsg+="close\n";

if( d[index].orders_buy==0 && d[index].orders_pending_buy>0)

{

double val=d[index].maxPendingOpenPrice_buy+d[index].point*d[index].stopLevel;

if( d[index].bid>val)

{

deleteAllPendingOrders(index,OP_BUYLIMIT);

return ;

}

}

if( d[index].orders_buy>0 )

{

double val=d[index].point*d[index].stopLevel;

if( d[index].bid> d[index].maxOpenPrice_buy+val)

{

closeAllOrders(index, OP_BUY);

deleteAllPendingOrders(index,OP_BUYLIMIT);

return ;

}

double val2=d[index].minOpenPrice_buy+1.5*d[index].stopLevel*d[index].point;

//debugMsg+=StringFormat("val2=%.5f\n",val2);

if( d[index].bid> val2 && d[index].minOpenPrice_profitBuy+ d[index].maxOpenPrice_profitBuy>0)

{

debugMsg+=StringFormat("val2=%.5f\n",val2);

closeSomeOrders(index);

deleteAllPendingOrders(index,OP_BUYLIMIT);

return ;

}

}

return ;

}

void deleteAllPendingOrders(int index,int orderType)

{

//for(;;)

// {

int i,n;

n=OrdersTotal();

if( n<=0) return ;

for(i=0;i<n;i++)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

continue;

if( OrderSymbol()!=d[index].strSymbol) continue;

if( OrderMagicNumber()!=d[index].magicma) continue;

/*

if(OrderType()==OP_BUY)

{

double bid=SymbolInfoDouble(OrderSymbol(), SYMBOL_BID);

if(!OrderClose(OrderTicket(),OrderLots(),bid,3,Violet))

{

break;

}

}

else if(OrderType()==OP_SELL)

{

double ask=SymbolInfoDouble(OrderSymbol(), SYMBOL_ASK);

if(!OrderClose(OrderTicket(),OrderLots(),ask,3,Violet))

{

break;

}

}*/

if(OrderType()==orderType){

bool ret=OrderDelete(OrderTicket(),Violet);

}

}

// }

}

void closeAllOrders(int index,int orderType)

{

//for(;;)

// {

int i,n;

n=OrdersTotal();

if( n<=0) return ;

for(i=0;i<n;i++)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

continue;

if( OrderSymbol()!=d[index].strSymbol) continue;

if( OrderMagicNumber()!=d[index].magicma) continue;

if( OrderType()!=orderType) continue;

if(OrderType()==OP_BUY)

{

double bid=SymbolInfoDouble(OrderSymbol(), SYMBOL_BID);

if(!OrderClose(OrderTicket(),OrderLots(),bid,3,Violet))

{

break;

}

}

else if(OrderType()==OP_SELL)

{

double ask=SymbolInfoDouble(OrderSymbol(), SYMBOL_ASK);

if(!OrderClose(OrderTicket(),OrderLots(),ask,3,Violet))

{

break;

}

}

//if(OrderType()==orderType){

// bool ret=OrderDelete(OrderTicket(),Violet);

//}

}

// }

}

void closeSomeOrders(int index)

{

int i,n;

n=OrdersTotal();

if( n<=0) return ;

for(i=0;i<n;i++)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

continue;

if( OrderSymbol()!=d[index].strSymbol) continue;

if( OrderMagicNumber()!=d[index].magicma) continue;

//if( OrderType()!=orderType) continue;

if(OrderType()==OP_BUY)

{

if( OrderTicket()==d[index].maxOpenPrice_buy_ticket || OrderTicket()==d[index].minOpenPrice_buy_ticket)

{

double bid=SymbolInfoDouble(OrderSymbol(), SYMBOL_BID);

if(!OrderClose(OrderTicket(),OrderLots(),bid,3,Violet))

{

break;

}

}

}

}

}

void control_modify(int index)

{

debugMsg+="modify\n";

}

void control_getdata(int index)

{

debugMsg+="control getdata,";

d[index].spread=SymbolInfoInteger(d[index].strSymbol,SYMBOL_SPREAD);

d[index].point=SymbolInfoDouble(d[index].strSymbol, SYMBOL_POINT);

d[index].stopLevel=SymbolInfoInteger(d[index].strSymbol, SYMBOL_TRADE_STOPS_LEVEL);

debugMsg+=StringFormat("spread=%d, point=%.5f, stopLevel=%d\n",d[index].spread ,d[index].point, d[index].stopLevel) ;

//--

uint dataLen=60;

double allLen=0;

ENUM_TIMEFRAMES timeFrame=PERIOD_D1;

// timeFrame=d[index].timeFrame;

uint i;

for(i=0;i<dataLen;i++)

{

double high=iHigh(d[index].strSymbol,timeFrame,i+1);

double low=iLow(d[index].strSymbol,timeFrame,i+1);

allLen+=MathAbs( high-low);

}

d[index].agvLen= allLen/(dataLen);

d[index].skip=d[index].agvLen/6;

debugMsg+=StringFormat( "agvLen=%.5f, skip=%.5f\n", d[index].agvLen, d[index].skip);

//-------

int buys=0,sells=0;

d[index].orders_pending_buy=0;

d[index].orders_pending_sell=0;

d[index].minOpenPrice_buy=0;

d[index].maxOpenPrice_buy=0;

d[index].minPendingOpenPrice_buy=0;

d[index].maxPendingOpenPrice_buy=0;

d[index].profit_buy=0;

d[index].profit_sell=0;

//---

uint n=OrdersTotal();

for(i=0;i<n;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderSymbol()==d[index].strSymbol && OrderMagicNumber()==d[index].magicma )

{

double price=OrderOpenPrice();

if(OrderType()==OP_BUY){

buys++;

double buyProfit=OrderProfit()+OrderCommission()+OrderSwap();

if( d[index].minOpenPrice_buy==0 || price<d[index].minOpenPrice_buy)

{

d[index].minOpenPrice_buy=price;

d[index].minOpenPrice_buy_ticket=OrderTicket();

d[index].minOpenPrice_profitBuy=buyProfit;

}

if( d[index].maxOpenPrice_buy==0 || price>d[index].maxOpenPrice_buy)

{

d[index].maxOpenPrice_buy=price;

d[index].maxOpenPrice_buy_ticket=OrderTicket();

d[index].maxOpenPrice_profitBuy=buyProfit;

}

d[index].profit_buy+=OrderProfit()+OrderCommission()+OrderSwap();

}

else if(OrderType()==OP_SELL){

sells++;

d[index].profit_sell+=OrderProfit()+OrderCommission()+OrderSwap();

}

else if(OrderType()==OP_BUYLIMIT){

d[index].orders_pending_buy++;

if( d[index].minPendingOpenPrice_buy==0 || price<d[index].minPendingOpenPrice_buy )

{

d[index].minPendingOpenPrice_buy=price;

}

if( d[index].maxPendingOpenPrice_buy==0 || price>d[index].maxPendingOpenPrice_buy )

{

d[index].maxPendingOpenPrice_buy=price;

}

}

else if(OrderType()==OP_SELLLIMIT){

d[index].orders_pending_sell++;

}

}

}

d[index].orders_buy=buys;

d[index].orders_sell=sells;

debugMsg+=StringFormat( "buys=%d, sells=%d\n", d[index].orders_buy, d[index].orders_sell);

debugMsg+=StringFormat( "pendingbuys=%d, pendingsells=%d\n", d[index].orders_pending_buy, d[index].orders_pending_sell);

debugMsg+=StringFormat( "minOpenPrice=%.5f, maxOpenPrice=%.5f\n", d[index].minOpenPrice_buy, d[index].maxOpenPrice_buy);

debugMsg+=StringFormat( "minPendingOpenPrice=%.5f, maxPendingOpenPrice=%.5f\n", d[index].minPendingOpenPrice_buy, d[index].maxPendingOpenPrice_buy );

//-----------

d[index].bid=SymbolInfoDouble( d[index].strSymbol, SYMBOL_BID);

d[index].ask=SymbolInfoDouble( d[index].strSymbol, SYMBOL_ASK);

debugMsg+=StringFormat( "profit_buy=%.2f, profit_sell=%.2f\n", d[index].profit_buy, d[index].profit_sell);

d[index].digits=(int)SymbolInfoInteger(d[index].strSymbol,SYMBOL_DIGITS);

return ;

}

----------------------

打包下載:ZIP下載

----------------------


友情提示:
1、本網站內容和圖片僅為個人學習、研究公益之用,如有侵權請聯系我們馬上處理。
2、本網站所刊載的所有信息僅供參考,不用做交易和服務的根據,且不構成任何投資建議。

相关内容

  • 什么是宝塔线,宝塔线指标

    宝塔线指标,又称TOWER指标,是一种与K线及点状图相类似并注重股价分析的中长期技术分析工具。宝塔线指标TOWER是以不同颜色(或虚实体)的捧线来区分股价涨跌的一种图表型指标。它主要是将股价多空之间争斗的过程和力量的转变表现在图表中,借以研判未来股价的涨跌趋势及选择适当的买卖时机。宝塔线主要是应用趋...

    05-22 15:26宝塔线
  • DMI指标卖出形态:上涨行情中ADX高位死叉ADXR

    DMI指标卖出形态:上涨行情中ADX高位死叉ADXR形态K线图解实例:2013年9月25日,西安旅游的ADX指标跌破ADXR。在交叉的同时,这两条指标线均处于高位,这是看跌信号,之后股价走出一波下跌行情。形态简介:在股价连续上涨一段时间后, ADX指标和ADXR指标高位形成死叉。这个形态显示之前强势...

    05-22 15:24DMI指标
  • DMI指标卖出形态:MDI自20以下回升

    DMI指标卖出形态:MDI自20以下回升K线图解实例:2014年2月21日,亚太药业的MDI指标在20下方横盘整理一段时间后向上突破。看到这个形态后,投资者应该尽快卖出手中的股票。之后股价走出一波下跌行情。形态简介:如果MDI指标线长期在20以下调整,一旦其向上突破 20,这个形态显示市场上的空方力...

    05-22 15:24DMI指标
  • DMI指标卖出形态:PDI跌破MDI

    DMI指标卖出形态:PDI跌破MDI形态K线图解实例:2010年4月28日,鲁信高新的PDI线跌破MDI线,说明市场上的空方力量逐渐增强,未来股价会在空方的主导下持续下跌。看到这个信号,投资者应该尽快卖出手中的股票。形态简介:当PDI跌破MDI时,说明市场上的空方力量不断增强,未来股价会在空方的主导...

    05-22 15:24DMI指标
  • K线与SAR指标的运行关系

    K线与SAR指标的运行关系图形特征K线与SAR指标的运行关系,包括同时向上运行、同时向下运行。实战含义(1)K线与SAR指标同时向下运行,后市看跌,应择机卖出。如图所示,股价一直处于下降趋势中,SAR指标也处在下跌趋势中,空方一直占优,投资者不可参与这种行情。(2)K线与SAR指标同时向上运行,后市...

    05-22 15:24SRA指标
  • DMI指标买入形态: PDI、ADX和ADXR向上发散

    DMI指标买入形态: PDI、ADX和ADXR向上发散形态K线图解实例:2012年1月23日,华工科技的MDI线跌破ADX,落到四条指标线中最低的位置。与此同时,该股的PDI、ADX和ADXR三条栺标线均持续上涨,此后股价走出一波上涨行情。形态简介:DMI的四条指标线在低位纠结一段时间后,MDI变成...

    05-22 15:24DMI指标
  • 趋向指标(DMI):ADX曲线

    趋向指标(DMI):ADX曲线图形特征ADX为动向值DX的平均数,而DX是根据+DI和一DI两数值的差和对比计算出来的百分比,因此,利用ADX指标能更有效地判断市场行情的发展趋势。案例讲解1.ADX上升,趋势仍将继续。如果处于涨势中,择机入场;如果处于跌势中,择机离场。如图所示,股价处在缓慢上升的行...

    05-22 15:24DMI指标
  • K线突破SAR指标

    K线突破SAR指标图形特征K线突破SAR指标:包括K线向上突破SAR指标和K线向下突破SAR指标。实战含义(1)K线向下突破SAR指标,后市看跌,应择机卖出。如图所示,K线向下突破SAR指标,表明空方力量开始加强,后市看跌,投资者应择机出局。(2)K线向上突破SAR指标,后市看涨,应择机买入。如图所...

    05-22 15:24SRA指标
  • 趋向指标(DMI):±DI交叉

    DMI由技术分析大师威尔斯.威尔德(WellsWilder 发明。DMI是英文“DirectionalMovementIndex”的缩写,中文直译是“方向移动指数”,比较流行的译法有“趋势指标”、“趋向指标&rdqu...

    05-22 15:24DMI指标
  • 抛物线指标(SAR)

    抛物线指标(SAR)SAR指标,又称抛物线指标或停损转向操作点指标,其英文全称为“StopandReveres”,是由美国技术分析大师威尔斯·威尔德(Wells Wil-der 所创造的,是一种简单易学、比较准确的中短期技术分析工具。SAR指标设计形式相当别致。大多数传统技术...

    05-22 15:23SRA指标
  • DMI指标买入形态:ADX低位金叉ADXR,同时PDI位于MDI上方

    DMI指标买入形态:ADX低位金叉ADXR,同时PDI位于MDI上方形态K线图解实例:2014年01月29日,富奥股份的ADX指标和ADXR指标在低位形成金叉形态。这个形态表示股价开始加速波动。几个交易日前,PDI已向上突破MDI,且二者之间的距离逐渐拉开。形态简介:ADX和ADXR在低位金叉是股价...

    05-22 15:23DMI指标
  • DMI指标买入形态:PDI自20以下回升

    DMI指标买入形态:PDI自20以下回升形态K线图解实例:2014年01月05日,深天地A的PDI指标线突破20,这显示多方力量由弱转强。01月21日,PDI回落到20位置有获得支撑反弹,确认了多方的强势,此后股价走出一波上涨行情。形态简介:当PDI突破20时说明多方力量开始由弱转强,这是看涨买入的...

    05-22 15:21DMI指标
  • 趋向指标(DMI)买入形态:PDI突破MDI

    DMI指标买入形态:PDI突破MDI形态K线图解实例:深振业A的股价在经过一轮上涨后的震荡调整后,2013年11月05日PDI指标突破了MDI,此形态预示着的多方力量已经逐渐进入,股价在短期内有望大幅上涨,是看涨的形态,之后股价迎来了一波上涨行情。形态简介:当PDI向上突破MDI时,显示市场上有新的...

    05-22 15:21DMI指标
  • 股票知识:DMI指标讲解

    什么是DMI指标K线图解趋向指标或动向指标又叫DMI指标(全称Directional Movement Index,简称DMI),是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析方法。DMI指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况...

    05-22 15:21DMI指标
  • 利用乖离率指标识别趋势

    乖离率指标(BIAS 是基于移动平均线原理而派生出来的一种指标,其主要功能在于侦测市场或个股在运行过程中与移动平均线的偏离程度,并利用这种偏离程度来预测价格的后期走势,指导买卖操作。乖离率指标的设计原理我们知道,移动平均线系统具有“分离--聚合--再分离”的特性,即在价格的一...

    05-22 15:20BIAS乖离率
  • 改进BIAS指标的应用方法

    改进BIAS指标的应用方法改进乖离率指标应用的核心原则:改进型的乖离率指标BIAS4非常适合于做买入决策时参考,但在卖出信号的研判上存在一定的滞后性。所以,在做卖出决策时要更多地参考常用的乖离率指标。乖离率指标是根据葛兰碧移动平均线八原则推演而来,其原则提到,当股价突然暴跌或是暴涨,距离移动平均线很...

    05-22 15:20BIAS乖离率
  • 综合运用BIAS指标的方法

    综合运用BIAS指标的方法综合运用乖离率指标的核心原则:选择适宜的参数,并且在应用乖离率指标时,应结合不同情况灵活运用才能提高贏利机会。乖离率是指股价与平均侈动线之间的偏离程度,通过百分比的形式来表示股价与平均移动线之间的差距。如果股价在均线之上,则为正值;如果股价在均线之下,则为负值。一、乖离率的...

    05-22 15:20BIAS乖离率
  • 如何利用CCI指标进行短线操盘

    如何利用CCI指标进行短线操盘CCI指标又叫顺势指标,是由美国股市分析家唐纳德·蓝伯特所创造的,是一种重点研判股价偏离度的股市分析工具。1.CCI指标的原理CCI指标是一种比较新颖的技术指标。它最早是用于期货市场的判断,后运用于股票市场的研判,并被广泛使用。与大多数单一利用股票的收盘价、开盘价、最高...

    05-22 15:19CCI指标
  • CCI指标卖出形态:CCI指标跌破+100

    CCI指标卖出形态:CCI指标跌破+100形态K线图解实例:2013年5月31日,澳柯玛股价的CCI指标跌破+100,这说明市场结束了超买行情,是看跌卖出信号。经过CCI指标跌破0后的确认,股价走出一波回调行情。形态简介:当CCI指标跌破+100时,表示市场结束了超买状态。股价快速上涨的行情已经结束...

    05-22 15:19CCI指标
  • CCI指标卖出形态:CCI指标在+100上方与股价顶背离

    CCI指标卖出形态:CCI指标在+100上方与股价顶背离形态K线图解实例:2013年7月,冠农股份的股价和CCI指标在+100上方出现了顶背离形态,预示着股价持续上涨的行情即将结束。在经过后期的确认之后,股价开始了下跌的行情。形态简介:当CCI在+100上方时显示市场处于超买状态。如果这时CCI指标...

    05-22 15:19CCI指标
  • CCI指标买入形态:CCI指标突破-100

    CCI指标买入形态:CCI指标突破-100形态K线图解实例:2014年1月22日,长城电工股价的CCI指标突破-100,这是一个看涨买入信号。说明股价即将结束下跌行情。1月24日, CCI指标继续突破0,股价后期迎来一波上涨行情。形态简介:股价的CCI指标在-100下方整理一段时间后向上突破-100...

    05-22 15:19CCI指标
  • CCI指标买入形态:CCI指标在-100下方与股价底背离

    CCI指标买入形态:CCI指标在-100下方与股价底背离形态K线图解实例:2013年10月至11月,国电南端的股价连续创出新低,但同时CCI指标在-100下方的低位却形成了一底比一底高的背离形态,这是股价有见底反弹的信号,后市股价走出了一轮反弹行情。形态简介:当CCI指标在-100下方时显示市场处于...

    05-22 15:19CCI指标
  • BIAS指标的基本应用法则

    BIAS指标的基本应用法则乖离率表现个股当日收盘价与移动平均线之间的差距当股价的正乖离扩大到一定极限时,表爪短期获利越大,则获利回吐的可能性越高;当股价的负乖离扩大到一定极限时,则空头回补的可能性越高。股价与乖离率究竟达到何种程度的百分比才算是买进或是卖出的时机,不同市场、时期、周期及移动平均线算法...

    05-22 15:19BIAS乖离率
  • CCI指标买入形态:CCI指标突破+100

    CCI指标买入形态:CCI指标突破+100形态K线图解实例:2013年8月28日,抚顺特钢的CCI指标突破+100,这个形态表示市场进入了超买状态,投资者情绪已经被调动起来,看涨信号已经基本可以确立后,是短线买入信号。形态简介:在一波短期的行情中,当CCI指标线突破+100时,表示市场已经进入了超买...

    05-22 15:19CCI指标
  • 乖离率BIAS指标的原理

    乖离率BIAS指标的原理乖离率是测量股价偏离均线大小程度的指标,当股价偏离市场平均成本太大,都有一个回归的过程,即所谓的“物极心反”。乖离率BIAS是移动平均线衍生的指标。是依附于移动平均线的指标,无移动平均线,则无乖离率。移动平均线只能用来判断趋势,无法预测股价高低点,而乖...

    05-22 15:19BIAS乖离率