Les premières photos:
La raison en est que lorsque l'on apprend la stratégie de la double ligne droite, il n'y a pas de façon intuitive d'observer les positions ouvertes, l'étude des points d'équilibre et l'écriture du code, et que le code n'est pas intuitif lorsque l'on teste avec le disque, et que les titres des journaux de retour sont obscurs. J'aimerais écrire un graphique intuitif, basé sur un exemple de code de taille Z, j'ai écrit un modèle de graphique simple, maintenant les fonctions sont très simples, il suffit d'afficher en temps réel les lignes K, afficher les positions ouvertes, les points de mise à l'arrêt. Les indicateurs que j'ai écrits montrent les lignes terminées, sont affichés dans le diagramme de lignes K, etc.), et j'ai l'intention de les ajouter lentement. Il est facile de l'utiliser: Il y a deux fonctions d'exportation temporaire:
$.SignOP(time,price,amount,state)
$.Draw(records)
La fonction $.SignOP ((time, price, amount, state) est utilisée immédiatement après l'ouverture de l'opération pour marquer l'ouverture de l'opération jusqu'à la ligne K, avec quatre paramètres. $.Draw (records) Cette fonction est utilisée pour dessiner des lignes K. Cette fonction doit être placée au début de la boucle principale de la stratégie, les paramètres peuvent être passés à null, laissant la fonction elle-même obtenir.
Voici un exemple de code de 30 lignes avec un Z de grande taille, pour accéder au code avec ce modèle. Il n'y a que trois phrases dans le code.
function main(){
var STATE_IDLE = -1;//空闲状态
var state = STATE_IDLE;
var opAmount = 0;
var initAccount = $.GetAccount();
Log(initAccount);//输出账户初始信息
while(true){
---------------------------------------------------------------------------------------------
$.Draw(null);// 画图表K线
--------------------------------------------------------------------------------------------
if(state === STATE_IDLE){
var n = $.Cross(FastPeriod,SlowPeriod);
if(Math.abs(n) >= EnterPeriod){
opAmount = parseFloat((initAccount.Stocks * PositionRatio).toFixed(3));
var obj = n > 0 ? $.Buy(opAmount) : $.Sell(opAmount);
if(obj){
opAmount = obj.amount;
state = n > 0 ? PD_LONG : PD_SHORT;
Log("开仓详情",obj,"交叉周期",n);
}
---------------------------------------------------------------------------------------------
$.SignOP((new Date()).getTime(),obj.price,obj.amount,(n > 0 ? 1 : 2) ); //标记买入 卖出 开仓
---------------------------------------------------------------------------------------------
}
}else{
var n = $.Cross(ExitFastPeriod,ExitSlowPeriod);
if(Math.abs(n) >= ExitPeriod && ((state === PD_LONG && n < 0 ) || (state === PD_SHORT && n > 0))){
var obj = state === PD_LONG? $.Sell(opAmount) : $.Buy(opAmount);
---------------------------------------------------------------------------------------------
$.SignOP((new Date()).getTime(),obj.price,obj.amount,0); //标记平仓
---------------------------------------------------------------------------------------------
state = STATE_IDLE;
var nowAccount = $.GetAccount();
LogProfit(nowAccount.Balance - initAccount.Balance,"钱:",nowAccount.Balance,"币:",nowAccount.Stocks,"平仓详情:",obj,"交叉周期",n);
}
}
Sleep(Interval*1000);//暂停10秒
}
}
Le code n'est pas encore parfait, bienvenue dans le grand dieu axe, parfait.
leilmlÇa va!
L'inventeur de la quantification - un petit rêveContinuez à améliorer~~ pour améliorer notre plateforme~~