Ci-dessous, une photo de la scène:
La raison en est que lorsque l’on apprend la stratégie de la ligne de parité, il n’y a pas d’observation intuitive possible pour l’étude de l’ouverture et de la clôture de la position, et pour la rédaction du code, et que le code n’est pas intuitif pour le test du disque, et que les titres des journaux sont confus, et qu’il n’y a pas d’observation intuitive possible pour le test du disque. J’aimerais écrire un graphique qui soit visuellement visible. J’ai écrit un simple modèle de graphique basé sur un exemple de code de grandeur Z. Maintenant, les fonctionnalités sont très simples, il suffit d’afficher les lignes K en temps réel, d’afficher les points d’ouverture et de clôture. L’indicateur écrit par vous-même est affiché en ligne, affiché dans un diagramme de ligne K, etc.), et je compte l’ajouter progressivement. Comme il n’a pas encore été testé, il est offert à l’apprentissage, soyez prudent avec le disque. Le mot “simple” est utilisé pour désigner: Il y a 2 fonctions d’exportation temporaire:
$.SignOP(time,price,amount,state)
$.Draw(records)
La fonction \(.SignOP ((time,price,amount,state) est utilisée pour marquer la ligne K de la position ouverte après l'ouverture de la position ouverte, avec 4 paramètres. \).Draw(records) Cette fonction est utilisée pour tracer des lignes K. Cette fonction doit être placée au début de la boucle principale de la stratégie, le paramètre peut être transmis à null, et la fonction elle-même doit obtenir ≠.
Voici un exemple de code de 30 lignes en Z-majeure pour accéder au code avec ce modèle: Il n’y a que 3 phrases ajoutées au 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 à la correction de l’axe du grand dieu, parfait.