星期三, 1月 31, 2018
星期一, 1月 29, 2018
星期五, 1月 26, 2018
星期三, 1月 24, 2018
星期二, 1月 23, 2018
星期一, 1月 22, 2018
星期五, 1月 19, 2018
星期四, 1月 18, 2018
星期三, 1月 17, 2018
星期二, 1月 16, 2018
星期一, 1月 15, 2018
星期五, 1月 12, 2018
星期四, 1月 11, 2018
星期三, 1月 10, 2018
星期二, 1月 09, 2018
星期五, 1月 05, 2018
星期四, 1月 04, 2018
20180104 AUDUSD貨幣兌 超買漲多回調?!
20180104 AUDUSD 貨幣兌 超買漲多回調?!
Edited by smith http://www.copywinner.org http://www.copywinner.net
澳元/美元隔日延續漲勢,但在觸及自兩個月以來最高水平後.7856後暫止步上行。… more更多 http://www.copywinner.org/2018/01/20140104-audusd.html
匯價站上200日均線之後,逐步靠攏0.79關口,目前盤面離此位置仍有一定空間。匯價正在回測0.7800關口,若日內收價於0.7800關口之上,則多頭情緒將繼續保持。
然而,震盪指標和RSI指標皆進入「超買區域」四天之久,提示匯價存在下行風險。
下行方向上,支撐位於0.7690附近的200日均線,若此位置失守,則盤面多頭走勢終止,下一支撐位將指向0.7500關口。若匯價繼續下行,則盤面將逐漸恢復自0.8124的空頭走勢。
小結:AUDUSD貨幣兌短期多頭走勢未變。只要匯價能維持在0.7800關口之上運行,則多頭將延續。而在0.7690之下,多頭走勢暫緩。
… end
星期三, 1月 03, 2018
星期二, 1月 02, 2018
20180102俄國外匯交易圈盛名的程序員Vladimir Karputov 發佈 ai人工智能編程ea代碼
20180102俄國外匯交易圈盛名的程序員Vladimir Karputov 發佈 ai人工智能編程ea代碼
Smith特別介紹一直長期關注的俄國外匯交易圈盛名的程序員Vladimir Karputov,伊最近一年致力AI人工智慧-深度學習方面,發表一款EA, 並無私地提供本ea程式設計代碼。
原文摘錄:「本EA交易使用了人工智慧 - 一個單層的神經網路。使用了用於識別報價變化方向的 "感知器"。代碼實現了對 iAC 指標以及歷史柱的開啟時間資料的訪問 (CopyTime 函數)。
在 M30, 初始存款 - 10 000, 起始日期 2016.01.01, 結束日期 2016.10.31, 其他參數保持默認:」
在 M30, 初始存款 - 10 000, 起始日期 2016.01.01, 結束日期 2016.10.31, 其他參數保持默認:」
特將程式設計代碼分享網友…期待有識之士高手,偕手協作完善它。有興趣的朋友,代碼參考連結:https://www.mql5.com/zh/code/viewcode/16727/160007/artificial_intelligence.mq5
#property copyright "Copyright © 2006, Yury V. Reshetov ICQ:282715499 http://reshetov.xnet.uz/"
#property link "http://reshetov.xnet.uz/"
#include <Trade\AccountInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
CAccountInfo m_account; // account info wrapper
CSymbolInfo m_symbol; // symbol info object
CPositionInfo m_position; // trade position object
CTrade m_trade; // trading object
//---- input parameters
input int x1 = 76;
input int x2 = 47;
input int x3 = 153;
input int x4 = 135;
input ushort m_sl=8355; // stop loss level
input double m_lots=1.0; // volume transaction
input ulong MagicNumber=888; // magic number
//---
static datetime prevtime=0;
int handle_iAC; // variable for storing the handle of the iAC indicator
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
if(m_lots<=0.0)
{
Print("The \"volume transaction\" can't be smaller or equal to zero");
return(INIT_PARAMETERS_INCORRECT);
}
m_symbol.Name(Symbol()); // sets symbol name
m_trade.SetExpertMagicNumber(MagicNumber); // sets magic number
m_trade.SetDeviationInPoints(3); // sets deviation
//--- create handle of the indicator iAC
handle_iAC=iAC(Symbol(),Period());
//--- if the handle is not created
if(handle_iAC==INVALID_HANDLE)
{
//--- tell about the failure and output the error code
PrintFormat("Failed to create handle of the iAC indicator for the symbol %s/%s, error code %d",
Symbol(),
EnumToString(Period()),
GetLastError());
//--- the indicator is stopped early
return(INIT_FAILED);
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(iTime(0)==prevtime)
return;
prevtime=iTime(0);
int spread=3;
//----
if(IsTradeAllowed())
{
if(RefreshRates())
spread=m_symbol.Spread();
else
return;
}
else
{
prevtime=iTime(1);
return;
}
ulong m_ticket=0;
//--- check for opened position
int total=PositionsTotal();
//----
for(int i=total-1; i>=0; i--)
{
if(!m_position.SelectByIndex(i))
return;
//--- check for symbol & magic number
if(m_position.Symbol()==Symbol() && m_position.Magic()==MagicNumber)
{
ulong m_prevticket=m_position.Ticket();
//--- long position is opened
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
//--- check profit
if(m_symbol.Bid()>(m_position.StopLoss()+(m_sl*2+spread)*Point()))
{
if(perceptron()<0)
{
//--- reverse
if(m_trade.Sell(m_lots*2,Symbol(),m_symbol.Bid(),m_symbol.Ask()+m_sl*Point(),0.0,"AI"))
{
m_ticket=m_trade.ResultDeal();
}
Sleep(30000);
//---
if(m_ticket==0)
prevtime=iTime(1);
else
{
m_trade.PositionCloseBy(m_ticket,m_prevticket);
//return;
}
}
else
{
//--- trailing stop
if(!m_trade.PositionModify(m_position.Ticket(),m_symbol.Bid()-m_sl*Point(),0))
{
Sleep(30000);
prevtime=iTime(1);
}
}
}
//--- short position is opened
}
else
{
// check profit
if(m_symbol.Ask()<(m_position.StopLoss()-(m_sl*2+spread)*Point()))
{
if(perceptron()>0)
{
//--- reverse
if(m_trade.Buy(m_lots*2,Symbol(),m_symbol.Ask(),m_symbol.Bid()-m_sl*Point(),0.0,"AI"))
{
m_ticket=m_trade.ResultDeal();
}
Sleep(30000);
//---
if(m_ticket==0)
prevtime=iTime(1);
else
{
m_trade.PositionCloseBy(m_ticket,m_prevticket);
//return;
}
}
else
{
//--- trailing stop
if(!m_trade.PositionModify(m_position.Ticket(),m_symbol.Ask()+m_sl*Point(),0))
{
Sleep(30000);
prevtime=iTime(1);
}
}
}
}
//--- exit
return;
}
}
//--- check for long or short position possibility
if(perceptron()>0)
{
//--- long
if(m_trade.Buy(m_lots,Symbol(),m_symbol.Ask(),m_symbol.Bid()-m_sl*Point(),0.0,"AI"))
{
m_ticket=m_trade.ResultDeal();
}
//---
if(m_ticket==0)
{
Sleep(30000);
prevtime=iTime(1);
}
}
else
{
//--- short
if(m_trade.Sell(m_lots,Symbol(),m_symbol.Bid(),m_symbol.Ask()+m_sl*Point(),0.0,"AI"))
{
m_ticket=m_trade.ResultDeal();
}
if(m_ticket==0)
{
Sleep(30000);
prevtime=iTime(1);
}
}
//--- exit
return;
}
//+------------------------------------------------------------------+
//| The PERCEPTRON - a perceiving and recognizing function |
//+------------------------------------------------------------------+
double perceptron()
{
double w1 = x1 - 100;
double w2 = x2 - 100;
double w3 = x3 - 100;
double w4 = x4 - 100;
double a1 = iACGet(0);
double a2 = iACGet(7);
double a3 = iACGet(14);
double a4 = iACGet(21);
return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}
//+------------------------------------------------------------------+
//| Get Time for specified bar index |
//+------------------------------------------------------------------+
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=0)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
datetime Time[];
datetime time=0;
ArraySetAsSeries(Time,true);
int copied=CopyTime(symbol,timeframe,index,1,Time);
if(copied>0) time=Time[0];
return(time);
}
//+------------------------------------------------------------------+
//| Gets the information about permission to trade |
//+------------------------------------------------------------------+
bool IsTradeAllowed()
{
if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
{
Alert("Check if automated trading is allowed in the terminal settings!");
return(false);
}
if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
{
Alert("Check if automated trading is allowed in the terminal settings!");
return(false);
}
else
{
if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
{
Alert("Automated trading is forbidden in the program settings for ",__FILE__);
return(false);
}
}
if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
{
Alert("Automated trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),
" at the trade server side");
return(false);
}
if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
{
Comment("Trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),
".\n Perhaps an investor password has been used to connect to the trading account.",
"\n Check the terminal journal for the following entry:",
"\n\'",AccountInfoInteger(ACCOUNT_LOGIN),"\': trading has been disabled - investor mode.");
return(false);
}
//---
return(true);
}
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data |
//+------------------------------------------------------------------+
bool RefreshRates()
{
//--- refresh rates
if(!m_symbol.RefreshRates())
return(false);
//--- protection against the return value of "zero"
if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
return(false);
//---
return(true);
}
//+------------------------------------------------------------------+
//| Get value of buffers for the iAC |
//+------------------------------------------------------------------+
double iACGet(const int index)
{
double AC[];
ArraySetAsSeries(AC,true);
//--- reset error code
ResetLastError();
//--- fill a part of the iACBuffer array with values from the indicator buffer that has 0 index
if(CopyBuffer(handle_iAC,0,0,index+1,AC)<0)
{
//--- if the copying fails, tell the error code
PrintFormat("Failed to copy data from the iAC indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated
return(0.0);
}
return(AC[index]);
}
//+------------------------------------------------------------------+
訂閱:
文章 (Atom)









































